Python 如何从发电机中产生每个备用元件?
如何从生成器生成每个备用元素 显而易见的方法似乎不起作用:Python 如何从发电机中产生每个备用元件?,python,Python,如何从生成器生成每个备用元素 显而易见的方法似乎不起作用: >>> generator[::2] TypeError: 'generator' object is not subscriptable 确保您可以编写实现相同目的的代码: x = 0 for item in generator: if x % 2 == 0: do_something(item) x += 1 但是Python在像这样的紧循环中的数学能力很差,我很想知道如何才能做
>>> generator[::2]
TypeError: 'generator' object is not subscriptable
确保您可以编写实现相同目的的代码:
x = 0
for item in generator:
if x % 2 == 0:
do_something(item)
x += 1
但是Python在像这样的紧循环中的数学能力很差,我很想知道如何才能做得更好。您可以使用它来让第二个选项更简洁:
for i, item in enumerate(generator):
if i % 2 == 0:
do_something(item)
这种方法只能用于提供符合任何类型重复索引模式的值:
def yield_every_other(g):
from itertools import compress, cycle
return compress(g, cycle([True, False]))
然后,例如
>>> for x in yield_every_other(2*i for i in range(20)):
... print(x)
显示
0
4
8
12
16
20
24
28
32
36
Python在紧循环中的数学能力很差
-你能解释一下吗可以做得更好。
-如何更好?请看。例如,您可以执行islice(,0,None,2)
。当您编写自己的生成器时,您可以完全控制生成哪些值,因此我不知道您在这里面临的问题是什么。强烈建议islice
,但您也可以在循环中使用生成器中的一个元素,如:\uu=next(生成器)
@PranavHosangadi您无需费心分配返回值<代码>为真时:下一步(生成器);生成下一个(生成器)。