我正在服用datacamp tutorial,我想知道是否有人可以解释为什么这个代码打印出最多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))
1
3
五
7
9
11
解决方法:
正如名称所示,next(序列)将获得所提供序列中的下一个元素.
一旦获得了一个元素,对next(sequence)的进一步调用将简单地在该那个之后产生下一个数字(假设我们重用相同的序列).
>>> sequence = count(start=0, step=1)
>>> next(sequence)
0
>>> next(sequence)
1
>>> next(sequence)
2
请注意,如果重新生成序列,您将重新开始:
>>> sequence = count(start=0, step=1)
>>> next(sequence)
0
>>> next(sequence)
1
>>> sequence = count(start=0, step=1)
>>> next(sequence)
0
在您的代码中,您在while条件下调用next(sequence),然后在print函数中调用next(sequence),因此两个值都不同.基本上,当下一个调用在while和print之间交替时,您将看到打印将打印出奇数值.
如果再添加一个,您可以看到类似的行为:
from itertools import count
sequence = count(start=0, step=1)
while(next(sequence) <= 10):
noop = next(sequence)
print(next(sequence))
这将打印2 5 8 11
如果您想打印出偶数数字,您可以:
从1开始计数:
from itertools import count
sequence = count(start=1, step=1)
while(next(sequence) <= 10):
print(next(sequence))
这将打印出2 4 6 8 10
或者,如果您希望0也在那里,只需在while循环之前添加一个print语句:
from itertools import count
sequence = count(start=0, step=1)
print(next(sequence))
while(next(sequence) <= 10):
print(next(sequence))
这将打印出0 2 4 6 8 10
如果您想要打印每个数字,只需保留下一个(序列)的输出:
from itertools import count
sequence = count(start=0, step=1)
element = next(sequence)
while(element <= 10):
print(element)
element = next(sequence)