簡體   English   中英

Itertools.count Python

[英]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調用在whileprint之間交替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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM