sum()
没有过滤和聚合(等)的非空序列上的迭代器如何不产生任何结果?
考虑一个简单的例子:
sequence = ['a', 'b', 'c']
list((el, ord(el)) for el in sequence)
这[('a', 97), ('b', 98), ('c', 99)]
符合预期。
现在,只需将 out 替换为ord(el)
从某个生成器中取出第一个值的表达式,使用(...).next()
- 请原谅人为的示例:
def odd_integers_up_to_length(str):
return (x for x in xrange(len(str)) if x%2==1)
list((el, odd_integers_up_to_length(el).next()) for el in sequence)
这产生[]
. 是的,空列表。没有('a',
东西)
元组。没有。
但我们没有过滤、聚合或减少。n
没有过滤或聚合的对象生成器表达式必须产生n
对象,对吗?这是怎么回事?