我有一个具有挑战性的问题: 想象一下,我有一个长度相同的字符串列表,如下面的“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] .....
