Skip to main content
 首页 » 编程设计

python之在每个 for 循环迭代中遍历列表

2025年05月04日15freeliver54

我正在编写以下代码:

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