[英]Itertools.count Python
我正在接受一個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))
1 3 5 7 9 11
正如名稱所示, next(sequence)
將獲得所提供序列中的下一個元素。
一旦獲得了一個元素,對next(sequence)
的進一步調用將簡單地在該那個之后產生下一個數字(假設我們重用相同的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
在你的代碼在呼喚next(sequence)
的條件時,再next(sequence)
的print
功能,因此,這兩個值是不同的。 基本上, next
調用在while
和print
之間交替while
,您將看到print
將打印出奇數值。
你可以看到一個類似的行為,如果你添加更多的next
:
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
如果您想要打印每個數字,只需保留next(sequence)
的輸出:
from itertools import count
sequence = count(start=0, step=1)
element = next(sequence)
while(element <= 10):
print(element)
element = next(sequence)
您需要從1開始才能獲得所需的輸出:
sequence = count(start=1, step=1)
while(next(sequence) <= 10):
print(next(sequence))
2
4
6
8
10
這只是代碼的修改版本,它產生相同的輸出我添加了關於代碼以特定方式工作的原因的注釋
from itertools import count
sequence = count(start=0, step=1)
# a has value count(0)
a=next(sequence)
while(a <= 10):
# b has value count(1) 3 5 and so on
b=next(sequence)
print(b)
# a has value count(2) 4 6 and so on
a=next(sequence)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.