<分区>
我希望能够将列表元素的构造推迟到它们第一次被访问时。显而易见的解决方案(使用下面的生成器不起作用,因为它可以迭代多次,等等)。
例如,下面打印 0 -> 9。我想打印 0-> 9 两次。
def costly_build_function(i):
return i
def my_function():
return (costly_build_function(i) for i in range(0,10))
tmp = my_function()
# print 0 to 0
for i in tmp:
print i
# print nothing
for i in tmp:
print i