Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python生成器中的reverse next()_Python_For Loop_Iterator_Next - Fatal编程技术网

Python生成器中的reverse next()

Python生成器中的reverse next(),python,for-loop,iterator,next,Python,For Loop,Iterator,Next,假设我们有以下代码: gen = (x for x in range(11)) for el in gen: print("Printing current element: ", el) #1 if el % 3 == 0: print("The next item is: ", next(gen)) #2 在本例中,我想在#1行中打印生成器中的所有数字,另外在#2行中打印可被3整除的数字。代码必须使用元素(而不是索引)迭代。还有一个限制,即生成器gen必须

假设我们有以下代码:

gen = (x for x in range(11))

for el in gen:
    print("Printing current element: ", el) #1
    if el % 3 == 0:
        print("The next item is: ", next(gen)) #2
在本例中,我想在
#1
行中打印生成器中的所有数字,另外在
#2
行中打印可被3整除的数字。代码必须使用元素(而不是索引)迭代。还有一个限制,即生成器
gen
必须保持为生成器(由于内存限制),并且不能用作
反向(list(gen))
中的列表


当前的实现使迭代由于
next(gen)

而跳过数字。您可以使用
itertools.tee
复制iterable,使用调用
next
将复制的iterable替换为偏移量1,然后使用
itertools.zip\u longest
将两个iterable配对进行迭代:

from itertools import tee, zip_longest
gen = (x for x in range(11))
a, b = tee(gen)
next(b)
for el, n in zip_longest(a, b):
    print("Printing current element: ", el)
    if el % 3 == 0:
        print("The next item is: ", n)
这将产生:

Printing current element:  0
The next item is:  1
Printing current element:  1
Printing current element:  2
Printing current element:  3
The next item is:  4
Printing current element:  4
Printing current element:  5
Printing current element:  6
The next item is:  7
Printing current element:  7
Printing current element:  8
Printing current element:  9
The next item is:  10
Printing current element:  10

您是否需要
“下一项是:”,el
?(正如您所说,您需要打印这一行中可被3整除的元素)。是否可以打印出数字10的当前元素?