Skip to main content
 首页 » 编程设计

python之在python中自动同时执行多个for循环

2025年05月04日21jpfss

我有一个具有挑战性的问题: 想象一下,我有一个长度相同的字符串列表,如下面的“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,所以我当然不能手动扩展代码,我需要找到一种方法来扩展上面的代码多个'for循环'自动。想象一下,我需要如下所示的最终多重循环:

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