簡體   English   中英

自動並同時在python中執行多個for循環

[英]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.

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