【发布时间】:2023-03-25 20:23:01
【问题描述】:
我正在编写以下代码:
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 个项目,代码比这更大,但我做了很多事情,让它们从中返回一个值,然后它取接下来的 3 个项目来自mylist 并一直这样做到此列表的末尾。
但现在我有一个问题,我需要识别每个迭代,但它们遵循一个规则:
第一个循环来自 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])
但它太丑了,一点也不快。有谁知道更快的方法吗?
【问题讨论】:
-
什么是 A、B 和 C? 3个清单?我真的不明白你的代码应该做什么。
-
它只是一个字符串,我需要返回有界的值
标签: python python-3.x list for-loop