0
這個問題與this,this和this有一點關係。假設我有兩個發電機/不同長度的迭代器:如何無限重啓字符串迭代器?
>>> s = "abcde"
>>> r = range(0, 16)
我現在想重複迭代中較短直到有耗盡的時間越長。標準zip()
函數終止一旦兩個較短的已耗盡:
>>> for c, i in zip(s, r) :
... print(c, i)
...
a 0
b 1
c 2
d 3
e 4
最好我能想出的包裹串入一個發電機,像這樣:
>>> def endless_s(s) :
... while True :
... for c in s :
... yield c
這給了我想要的結果
>>> _s = endless_s(s)
>>> for c, i in zip(_s, r) :
... print(c, i)
...
a 0
b 1
c 2
d 3
e 4
a 5
b 6
c 7
d 8
e 9
a 10
b 11
c 12
d 13
e 14
a 15
現在我想知道:有沒有更好更緊湊的方法來做到這一點?像無盡的字符串連接,還是一些這樣的?
正是我一直在尋找:'爲C,I拉鍊(itertools.cycle(s),R)' – Jens