【问题标题】:Having a generator expression as an input argument in Python在 Python 中将生成器表达式作为输入参数
【发布时间】:2017-02-12 04:00:15
【问题描述】:

如何与生成器表达式的值进行交互?例如:

def sumValues(*args):
# compute the sum of values

sumValues(abs(x) for x in range(0,10))

当范围已知时(例如,我们知道范围是[0,10)),我们可以放一个for循环,但是如果范围未知怎么办?

【问题讨论】:

  • 对于这种情况你也可以使用内置的sum函数
  • 谢谢,但我想避免使用任何内置函数。

标签: python-2.7 function input generator-expression


【解决方案1】:

这取决于你希望你的函数如何被调用,如果你想用列表、生成器或更一般的可迭代(可以在 for 循环中使用的任何东西)调用它并模仿构建的行为-在sum 然后

def my_sum(iterable):
    total = 0
    for x in iterable:
        total += x
    return total

并使用类似

my_sum(range(10))
my_sum(abs(x) for x in range(0,10))
my_sum([1,2,3,4,5,6])

如果你想模仿max的行为并像上面一样使用它,也像my_sum(1,2)my_sum(1,2,3)my_sum(1,2,3,4,5,6,7)等那么

def my_sum(*argv):
    total = 0
    values = None
    if len(argv) == 1:
        values = argv[0]
    else:
        values = argv
    for x in values:
        total += x
    return total

【讨论】:

    【解决方案2】:

    我想。答案如下:

    def sumValues(*args):
        # compute the sum of values
        total = 0
        for item in args[0]:
            total += item
        return total
    
    print(sumValues(abs(x) for x in range(0,10)))
    [output] => 45
    

    【讨论】:

      猜你喜欢
      • 2020-02-28
      • 1970-01-01
      • 2017-12-08
      • 2019-08-10
      • 2013-12-16
      • 1970-01-01
      • 2010-12-09
      • 2014-04-02
      • 2021-12-27
      相关资源
      最近更新 更多