Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中自动同时执行多个for循环_Python_For Loop - Fatal编程技术网

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

在python中自动同时执行多个for循环,python,for-loop,Python,For Loop,我有一个富有挑战性的问题: 假设我有一个长度相同的字符串列表,如下面的“seq”列表: seq=['FFFSS', 'FFEEE', 'WWQQA', 'PPRSA', 'MMMMM', 'PPEEE','HMSII','KKKDD','WTYUI','OPOPO','YYYYY', 'QQERT','YYRER', 'NNBBB', 'CCXZZ', 'UIOOP', 'QQWEE', ….,'FFGEE'] 当然,我真正的“seq”列表中还有更多的字符串,至少有100个长度相同的字符串 如

我有一个富有挑战性的问题: 假设我有一个长度相同的字符串列表,如下面的“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)
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)
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)
现在,如果我想同时将上面的“for循环”和打开的字符串编号0扩展到字符串编号5,我需要更改上面的代码,如下所示:

n= 0
for a0, a1, a2 in zip(seq[n+0], seq[n+1], seq[n+2]):   print(a0, a1, a2)
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)
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)
上述代码的输出如下所示,这是我最喜欢的输出:

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 in zip(seq[n+0], seq[n+1], seq[n+2]):   print(a0, a1, a2)
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)
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循环’

您可以使用zip*a将所有内容压缩在一起

然后你可以用a做任何你想做的事。例如:

>>> l = ['abc', 'cba', 'xyz']
>>> for a in zip(*l):
...     print(a[0] + a[2])
... 
ax
by
cz

你可以用zip*a把所有东西都拉在一起

然后你可以用a做任何你想做的事。例如:

>>> l = ['abc', 'cba', 'xyz']
>>> for a in zip(*l):
...     print(a[0] + a[2])
... 
ax
by
cz
要创建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] .....
要创建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] .....

为什么不把它分配给a,然后用[0],a[1]…etcif对它进行索引呢?我甚至可以这样做,我该怎么写100个seq[n+0],seq[n+1],…,seq[n+100]?你不需要左边的a0…a100,你可以把它作为一个元组捕捉,右边可以用*seq[begin:end]*seq[begin:end]替换,这正是我需要的。非常感谢你为什么不把它分配给a,并用[0],a[1]…etcif对它进行索引呢?我甚至可以这样做,我能做什么来写100个seq[n+0],seq[n+1],…,seq[n+100]?你不需要左边的a0…a100,你可以把它作为一个元组来捕捉,右边可以用*seq[begin:end]*seq[begin:end]替换。非常感谢你