【发布时间】:2020-02-03 22:21:08
【问题描述】:
我正在尝试创建一个 multiply(#numbers) 函数,它将括号中的所有内容相乘并返回数字。不知道会有多少个数,如何将括号内的数相乘?
这是我目前得到的代码:
def multiply(*args):
return *args * *args
【问题讨论】:
标签: python python-3.x function arguments
我正在尝试创建一个 multiply(#numbers) 函数,它将括号中的所有内容相乘并返回数字。不知道会有多少个数,如何将括号内的数相乘?
这是我目前得到的代码:
def multiply(*args):
return *args * *args
【问题讨论】:
标签: python python-3.x function arguments
与其他解决方案一样,此解决方案将 args 视为列表。但是,这里添加了一个 if 语句和一个额外的 return 语句,以确保如果 没有参数 传递给函数,则输出为 0 而不是 1。
def myFun(*args):
if len(args) == 0:
return(0)
product = 1
for arg in args:
product *= arg
return(product)
print(myFun())
print(myFun(8, 5))
print(myFun(8, 5, 2))
print(myFun(8, 5, 2, 3))
# Output:
0
40
80
240
【讨论】:
只需遍历 args 并将每个项目与结果变量中存储的结果相乘
def multiply(*args):
results=1
for a in args:
results=results*a
return results
另外,你可以用 sum 来做,只需将 results 的初始值设置为 0
【讨论】:
第一种方法:
def multiply1(*args):
# Multiply elements one by one
result = 1
for x in args:
result = result * x
return result
print(multiply1(1,2,4))
第二种方法:
import numpy
# using numpy.prod() to get the multiplications
def multiply2(*args):
return numpy.prod(args)
print(multiply2(1,2,4))
第三种方法:
from functools import reduce
# Python3 program to multiply all values in the
# list using lambda function and reduce()
def multiply3(*args):
return reduce((lambda x, y: x * y), args)
print(multiply3(1,2,4))
【讨论】:
已经给出的更简单的答案可能很适合您的需要,但是reduce 命令在将滚动计算顺序应用于列表中的数字对方面非常强大。
from functools import reduce
def multiply(*args):
return reduce((lambda x, y: x * y), args)
基本上如果你执行
multiply(1,2,3,4)
reduce 计算 x*y,其中 x 和 y 分别为 1 和 2,然后将结果用作 x,将 y 用作 3,并沿数字列表继续,将下一个与前面所有的结果相乘计算。
【讨论】:
args 是一个元组,因此您可以使用变量本身。例如:
>>> def func(*args):
... print len(args)
...
>>> func(5, 6, 7)
3
随心所欲地相乘:
>>> def multiply(*args):
... return reduce(lambda x, y: x*y, args)
...
>>> multiply(1, 2, 3, 4)
24
【讨论】:
您来对地方了。 *args 是您处理未知数量参数的方式。在您的函数中,args 将返回一个包含所有参数的列表。
def mult(*args):
result = 1
for num in args:
result *= num
print(result)
【讨论】:
def multiply(*args):
product = 1
for a in args:
product *= a
return product
基本上将args 视为一个列表。循环通过它并乘以。如果您预计不传递任何参数,您可能需要小心。如果您刚刚调用multiply(),这将输出1,但我不确定您在这种情况下的行为。
【讨论】: