【发布时间】:2018-02-11 13:28:13
【问题描述】:
如果我们考虑以下生成器和生成器函数:
def integers():
"""Infinite sequence of integers."""
i = 1
while True:
yield i
i = i + 1
def take(n, seq):
"""Returns first n values from the given sequence."""
seq = iter(seq)
result = []
try:
for i in range(n):
result.append(seq.next())
except StopIteration:
pass
return result
print take(5, integers()) # prints [1,2,3,4,5]
为什么必须在生成器函数中调用生成器内置的 iter 函数?没有它,代码仍然运行并打印正确的值。
【问题讨论】:
-
尝试删除该行并传递一个列表。
take([1, 2, 3], 2)
标签: python python-2.7 generator sequence