繁体   English   中英

如何在 python 中的 function 中将未知数量的 arguments 相乘

[英]How to multiply unknown numbers of arguments each other in a function in python

我正在尝试制作一个multiply(#numbers) function ,它将括号中的所有内容相乘并返回数字。 当我不知道会有多少数字时,如何将括号中的数字相乘?

这是我到目前为止得到的代码:

def multiply(*args):
    return *args * *args
def multiply(*args):
    product = 1
    for a in args:
        product *= a

    return product

基本上把args当作一个列表。 循环通过它并乘以。 如果您预计不传递任何参数,您可能需要小心。 如果您刚刚调用multiply() ,这将是 output 1 ,但我不确定在这种情况下您要采取的行为。

只需遍历 args 并将每个项目与结果变量中存储的结果相乘

def multiply(*args):
    results=1
    for a in args:
        results=results*a
    return results

此外,您可以使用 sum 来完成,只需将 results 的初始值设置为 0

你在正确的区域。 *args是您处理未知数量的 arguments 的方式。 在您的 function 中, args将返回一个包含所有 arguments 的列表。

def mult(*args):
    result = 1
    for num in args:
        result *= num
    print(result)

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

已经给出的更简单的答案可能很适合您的需求,但是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,并沿数字列表继续,将下一个数字与所有先前计算的结果相乘。

第一种方法:

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))

与其他解决方案一样,此解决方案将 args 视为列表。 但是,这里添加了一个带有额外返回语句的 if 语句,以确保如果没有参数传递给 function,则 output 为 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

def myFun(*args):

if len(args) == 0:  
    return(0)       
                
product = 1
for arg in args:
    product *= arg
return(product)

打印(myFun())

打印(我的乐趣(7、3、2))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM