我正在编写以下代码:
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] 来自 A
mylist[3:6] 来自 B
mylist[6:9] 来自 C
mylist[9:12]来自 A
mylist[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 的 len -> identifiers = [A,B,C]*len(mylist) 因此,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
