我正在处理以下代码:
mylist = [1,2,3,4,5,6,7,8,9,10.....]
for x in range(0, len(mylist), 3):
value = mylist[x:x + 3]
print(value)
基本上,我一次要在
mylist
中获取3个项目,代码比那还要大,但是我正在做很多事情,它们从中返回一个值,然后从mylist
中获取接下来的3个项目>并继续进行操作,直到此列表的末尾。但是现在我有一个问题,我需要确定每个迭代,但是它们遵循一个规则:
第一个循环来自A,第二个循环来自B,第三个循环来自C。
当它到达第三个时,它从A重新开始,所以我想做的是这样的:
mylist[0:3]
来自Amylist[3:6]
来自Bmylist[6:9]
来自Cmylist[9:12]
来自Amylist[12:15]
来自B ......最初的想法是实现一个从A到C的标识符,并且每次迭代都会跳转到下一个标识符,但是当到达C时,它将返回到A。
所以输出看起来像这样:
[1,2,3] from A
[4,5,6] from B
[6,7,8] from C
[9,10,11] from A
[12,13,14] from B
[15,16,17] from C
[18,19,20] from A.....
我不好的解决方案:
创建
identifiers = [A,B,C]
乘以mylist
-> identifiers = [A,B,C]*len(mylist)
的len因此,A,B和C的数量与需要标识的
mylist
编号相同。然后在我的for循环中添加一个计数器,该计数器为其自身添加+1,并访问列表的索引。mylist = [1,2,3,4,5,6,7,8,9,10.....]
identifier = ['A','B','C']*len(mylist)
counter = -1
for x in range(0, len(mylist), 3):
value = mylist[x:x + 3]
counter += 1
print(value, identifier[counter])
但是它太丑陋而且根本不快。有谁知道更快的方法吗?
最佳答案
循环,压缩和解压缩:
mylist = [1,2,3,4,5,6,7,8,9,10]
for value, iden in zip(mylist, itertools.cycle('A', 'B', 'C')):
print(value, iden)
输出:
1 A
2 B
3 C
4 A
5 B
6 C
7 A
8 B
9 C
10 A
关于python - 在每个for循环迭代上遍历列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49134404/