【问题标题】:How to multiply unknown numbers of arguments each other in a function in python如何在python的函数中将未知数量的参数相乘
【发布时间】:2020-02-03 22:21:08
【问题描述】:

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

这是我目前得到的代码:

def multiply(*args):
    return *args * *args

【问题讨论】:

    标签: python python-3.x function arguments


    【解决方案1】:

    与其他解决方案一样,此解决方案将 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
    

    【讨论】:

      【解决方案2】:

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

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

      另外,你可以用 sum 来做,只需将 results 的初始值设置为 0

      【讨论】:

        【解决方案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))
        

        【讨论】:

          【解决方案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,并沿数字列表继续,将下一个与前面所有的结果相乘计算。

          【讨论】:

            【解决方案5】:

            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
            

            【讨论】:

              【解决方案6】:

              您来对地方了。 *args 是您处理未知数量参数的方式。在您的函数中,args 将返回一个包含所有参数的列表。

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

              【讨论】:

                【解决方案7】:
                def multiply(*args):
                    product = 1
                    for a in args:
                        product *= a
                
                    return product
                

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-12-06
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-05-06
                  相关资源
                  最近更新 更多