gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:22 24 4
gpt4 key购买 nike

我正在编写以下代码:

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

关于python - 在每个 for 循环迭代中遍历列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49134404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com