使用列表理解(或for
循环append
)等同于调用list(..)
迭代器。由于生成器也是迭代器,我希望生成器也是如此。但是,如果您运行
def permute(xs, count, low = 0):
if low + 1 >= count:
yield xs
else:
for p in permute(xs, low + 1):
yield p
for i in range(low + 1, count):
xs[low], xs[i] = xs[i], xs[low]
for p in permute(xs, low + 1):
yield p
xs[low], xs[i] = xs[i], xs[low]
print("Direct iteration")
for x in permute([1, 2], 2):
print(x)
print("Listing")
for x in list(permute([1, 2], 2)):
print(x)
它打印:
Direct iteration
[1, 2]
[2, 1]
Listing
[1, 2]
[1, 2]
为什么会这样?
桃花长相依
相关分类