【问题标题】:Iterating through a tuple using a function and *args [duplicate]使用函数和 *args 遍历元组 [重复]
【发布时间】:2019-08-04 17:44:42
【问题描述】:

我正在尝试使用 *args 创建一个函数。它应该接受一定的数字,然后输出数字乘以10的乘积。

我正在学习使用 *args,但我无法获得输出。我的结果只输出函数中的第一个数字。我尝试过使用 for 循环,认为它会遍历每个字符,但它不起作用。

def myfunc(*args):
for args1 in args:
    return args1*10

当我运行函数时:

myfunc(10.1,20)

预期的输出应该是

(101.0,200.0)

实际输出是

(101.0)

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: python


    【解决方案1】:

    如果我理解你,那就是你需要的:

    def myfunc(*args): 
        return tuple(map(lambda x: x*10, args))
    

    *args 可以在函数中检索为名为@9​​87654323@ 的列表。您在这里所做的只是将第一个元素乘以 10 并返回,因此函数停止。

    【讨论】:

      【解决方案2】:

      您应该使用yield 而不是return,以使您的函数返回一个生成器,然后可以在需要时将其转换为tuple

      >>> def myfunc(*args):
      ...     for args1 in args:
      ...         yield args1*10
      ... 
      >>> 
      >>> myfunc(10.1,20)
      <generator object myfunc at 0x7f20d1ae8ad0>
      >>> 
      >>> tuple(myfunc(10.1,20))
      (101.0, 200)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-06
        • 1970-01-01
        相关资源
        最近更新 更多