[英]performing multiple for loops in python automatically and simultaneously
我有一個具有挑戰性的問題:想象一下,我有一個長度與以下“ seq”列表相同的字符串列表:
seq=['FFFSS', 'FFEEE', 'WWQQA', 'PPRSA', 'MMMMM', 'PPEEE','HMSII','KKKDD','WTYUI','OPOPO','YYYYY', 'QQERT','YYRER', 'NNBBB', 'CCXZZ', 'UIOOP', 'QQWEE', ….,'FFGEE']
但是,當然,我真正的“ seq”列表具有更多的字符串(至少100個具有相同長度的字符串)。
如果要同時打開字符串編號0到字符串編號3,則需要編寫多個“ for循環”,如下所示:
n= 0
for a0, a1, a2 in zip(seq[n+0], seq[n+1], seq[n+2]): print(a0, a1, a2)
現在,如果我想擴展上面的“ for循環”並同時將字符串號0打開到字符串號5,我需要像下面這樣更改上面的代碼:
n= 0
for a0, a1, a2, a3, a4 in zip(seq[n+0], seq[n+1], seq[n+2], seq[n+3], seq[n+4]): print(a0, a1, a2, a4)
上面代碼的輸出如下,這是我最喜歡的輸出:
F F W P
F F W P
F E Q R
S E Q S
S E A A
最后想像一下,我想越來越多地擴展上述代碼,例如同時將打開的字符串號0擴展到字符串號100,因此當然我不能手動擴展代碼,我需要找到一種方法來擴展上述多個'自動循環”。 想象一下,我需要如下的最終多重循環:
n= 0
for a0, a1, a2, a3, a4, …, a100 in zip(seq[n+0], seq[n+1], seq[n+2], seq[n+3], seq[n+4], …, seq[n+100]): print(a0, a1, a2, a4, …, a100)
我的問題是,如果我想擁有這100個“ a”變量,是否有任何辦法可以同時為大量變量自動進行多個“ for循環”?
要創建seq[n+0], seq[n+1], ..., seq[n+100]
,請使用itemgetter:
from operator import itemgetter
seqs = [itemgetter(n+i)(seq) for i in range(101)]
for a in zip(*seqs):
# do something with a[0], a[1], a[2] .....
您可以使用zip(*a)
所有內容壓縮在一起。
>>> l = ['abc', 'cba', 'xyz']
>>> for a in zip(*l):
... print(a)
...
('a', 'c', 'x')
('b', 'b', 'y')
('c', 'a', 'z')
然后,您可以做你想做任何事情a
。 例如:
>>> l = ['abc', 'cba', 'xyz']
>>> for a in zip(*l):
... print(a[0] + a[2])
...
ax
by
cz
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.