我在写一个生成函数。我想知道是否有更好的方法(阅读:更多的python,最好是有一个列表理解)来实现这样的东西:
generator = gen()
captures = []
for _ in xrange(x):
foo = next(generator)
directories.append(foo['name'])
yield foo
这里的关键是我不想获取整个收益率,gen()
返回的字典很大,这就是我使用生成器的原因。不过,我需要把所有的名字都记录下来。我觉得有一种方法可以通过列表理解来实现,但是我没有看到。思想?在
Tags:
您想要生成器的第一个
x
多个元素?使用itertools.islice
:还有另一种/更短的方法可以做到这一点,但我不会说它更像Python:
这利用了这样一个事实,即
append
与Python中的所有变异方法一样,总是返回None
,因此.append(...) or foo
的计算结果总是foo
。在这样,整个字典仍然是生成器表达式的结果,您仍然可以得到延迟求值,但是名称仍然保存到
directories
列表中。在也可以在显式
^{pr2}$for
循环中使用此方法:或者干脆简化一下你的循环:
因为没有理由使用
xrange
来迭代生成器(除非您实际上只想在中迭代一些已知数量的步骤)。在相关问题 更多 >
编程相关推荐