Itertools.count Python

TAS*_*ons 3 python count python-itertools

我正在接受一个datacamp教程,我想知道是否有人可以解释为什么这个代码打印出最多11个的ODD数字?我在考虑每个next()调用序列中的步骤,但如果我按照这个想法,第一个打印应该是数字2(count(0)在它第一次打到while时然后打印时转到count(1) ,它应该去计数(2).

TIA.

from itertools import count
sequence = count(start=0, step=1)
while(next(sequence) <= 10):
    print(next(sequence))
Run Code Online (Sandbox Code Playgroud)

1 3 5 7 9 11

Mat*_*ero 7

next(sequence)正如名称所示,将获得所提供序列中的下一个元素.

一旦获得了一个元素,进一步的调用next(sequence)就会在那个元素之后产生下一个数字(假设我们正在重复使用它sequence).

>>> sequence = count(start=0, step=1)
>>> next(sequence)
0
>>> next(sequence)
1
>>> next(sequence)
2
Run Code Online (Sandbox Code Playgroud)

请注意,如果重新生成序列,您将重新开始:

>>> sequence = count(start=0, step=1)
>>> next(sequence)
0
>>> next(sequence)
1
>>> sequence = count(start=0, step=1)
>>> next(sequence)
0
Run Code Online (Sandbox Code Playgroud)

在你的代码的调用next(sequence)上,而条件,然后next(sequence)print功能,所以双方的值会有所不同.基本上,当next调用在while和之间交替时,print您将看到print将打印出奇数值.

如果再添加一个,您可以看到类似的行为next:

from itertools import count
sequence = count(start=0, step=1)
while(next(sequence) <= 10):
    noop = next(sequence)
    print(next(sequence))
Run Code Online (Sandbox Code Playgroud)

这将打印出来 2 5 8 11


如果您想打印出偶数数字,您可以:

开始计算1:

from itertools import count
sequence = count(start=1, step=1)
while(next(sequence) <= 10):
    print(next(sequence))
Run Code Online (Sandbox Code Playgroud)

这将打印出来 2 4 6 8 10

或者,如果您也想0在那里,只需printwhile循环之前添加一个语句:

from itertools import count
sequence = count(start=0, step=1)
print(next(sequence))
while(next(sequence) <= 10):
    print(next(sequence))
Run Code Online (Sandbox Code Playgroud)

这将打印出来 0 2 4 6 8 10


如果您想打印每个数字,只需保留以下输出next(sequence):

from itertools import count
sequence = count(start=0, step=1)
element = next(sequence)
while(element <= 10):
    print(element)
    element = next(sequence)
Run Code Online (Sandbox Code Playgroud)