【发布时间】:2021-02-01 16:49:52
【问题描述】:
如何从生成器中生成每个备用元素?
显而易见的方法似乎不起作用:
>>> generator[::2]
TypeError: 'generator' object is not subscriptable
当然,您可以编写实现相同目的的代码:
x = 0
for item in generator:
if x % 2 == 0:
do_something(item)
x += 1
但是 Python 在像这样的紧密循环中不擅长数学,我很想知道如何才能做得更好。
【问题讨论】:
-
Python is bad at math in tight loops- 你能解释一下吗?could be done better.- 怎么样更好? -
看
itertools.islice。例如,您可以使用islice(<your generator>, 0, None, 2)。 -
当您编写自己的生成器时,您可以完全控制产生哪些值,所以我看不出您在这里面临什么问题
-
强烈推荐
islice,但您也可以使用循环内生成器中的一个元素,如下所示:_ = next(generator) -
@PranavHosangadi 您无需费心分配返回值。
while True: next(generator); yield next(generator).
标签: python