from itertools import count,repeat,cycle
for i in cycle("raghav"):
print(i)
if len(i) >= 6:
break
我的代碼是無限的運行,即使我有限制LEN,我也曾嘗試count(i) >= 6
但隨後會返回一個錯誤:如何限制no。的時間週期應該在Python運行
TypeError: a number is required
from itertools import count,repeat,cycle
for i in cycle("raghav"):
print(i)
if len(i) >= 6:
break
我的代碼是無限的運行,即使我有限制LEN,我也曾嘗試count(i) >= 6
但隨後會返回一個錯誤:如何限制no。的時間週期應該在Python運行
TypeError: a number is required
for i, x in enumerate(cycle('raghav')):
print(x)
if i >= 6:
break
這是一個完美的使用情況enumer吃了
哦,你想反覆打印'raghav'
。對於使用repeat
不cycle
:
from itertools import repeat
for i, x in enumerate(repeat('raghav')):
print(x)
if i == 5:
break
或者只是
for i in range(5):
print('raghav')
所以這裏枚舉實際上是在索引上工作,如果我沒有錯 –
@ Dr._Duck自己嘗試!用'print(i,x)'和'if i> = 6:'替換'print(x)',如果if> 20:' –
@ Dr._Duck我誤解了你的問題。請參閱我的編輯 –
外設立一個count
對象循環並使用其next
方法:
from itertools import count, cycle
c = count()
for i in cycle("raghav"):
print(i)
if next(c) >= 6:
break
'枚舉'爲你做櫃檯。 –
@MadPhysicist他們已經給出了'count'的提示並導入了它。 –
作爲一個與Python迭代的複雜性密切相關的人,OP並沒有引起我的興趣。 –
len(i)
將永遠是1
爲i
是'raghav'
只是一個字符。如果你只是想讓它打印出來'raghav'
字母的字母,因爲它似乎,你能做到這一點
for i in 'raghav':
print(i)
注意這一點是因爲它是XY問題的潛在解決方案,即使它不是OP所要求的。 –
@roganjosh由於OP想要在最近的編輯中打印6次這個詞,所以這是行不通的。 –
@MadPhysicist我知道,我編輯我的評論,因爲我不清楚。這絕對是XY問題的一個例子,但得到4個答案。 – roganjosh
可以使用itertools.islice
切片itertools.cycle
對象:
>>> from itertools import cycle, islice
>>> for i in islice(cycle('raghav'), 6):
print (i)
...
r
a
g
h
a
v
狡猾。因爲我們知道終止條件,所以比'enumerate'和'count'選項更清潔。 –
根據更新,'islice'的最後一個參數實際上應該是'6 * len('raghav')'。 –
我不認爲無論如何,你真的想在這裏使用'cycle'嗎? '因爲我在「raghav」'會實現你想要做'循環'的事情。 – roganjosh
@roganjosh取決於。停止索引可以延長,香草的方法將不起作用 –
@roganjosh他們可能正在尋找'raghavr' –