在跳过元素的同时循环列表 (python)
cycle through a list while skipping elements (python)
我正在尝试找到一种方法来遍历单个列表的循环,每次都跳过第一个元素。
例如,如果我有一个列表:
lst = [0,1,2,3,4,5,6]
并希望使用 for 循环循环遍历除第一个元素以外的所有元素并在任意点停止。因此,如果我希望从 lst 的索引 1 开始并遍历每个元素(不包括第一个)的循环,我可以使用以下内容:
scd = [1,2,3,4,5,6]
out = []
for i in range (1,14+1):
if (i%len(lst)) not in scd:
continue
else:
out.append(lst[i%len(lst)])
print(out)
它 returns 一个只有 12 个元素的列表:
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
我试图获得的输出是:
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2]
我知道问题出在 for 循环中使用 continue
,但我正在努力寻找获得所需输出的解决方法。
如有任何帮助,我们将不胜感激。另外,如果有更 pythonic 的方式来解决这个问题,我洗耳恭听。
非常感谢。
IIUC,您只是想重复相同的列表,对吗?在这个地方你可以使用 divmod
:
连接列表怎么样
num = 14
i,j = divmod(num, len(lst)-1)
out = lst[1:] * i + lst[1:1+j]
输出:
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2]
我正在尝试找到一种方法来遍历单个列表的循环,每次都跳过第一个元素。
例如,如果我有一个列表:
lst = [0,1,2,3,4,5,6]
并希望使用 for 循环循环遍历除第一个元素以外的所有元素并在任意点停止。因此,如果我希望从 lst 的索引 1 开始并遍历每个元素(不包括第一个)的循环,我可以使用以下内容:
scd = [1,2,3,4,5,6]
out = []
for i in range (1,14+1):
if (i%len(lst)) not in scd:
continue
else:
out.append(lst[i%len(lst)])
print(out)
它 returns 一个只有 12 个元素的列表:
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
我试图获得的输出是:
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2]
我知道问题出在 for 循环中使用 continue
,但我正在努力寻找获得所需输出的解决方法。
如有任何帮助,我们将不胜感激。另外,如果有更 pythonic 的方式来解决这个问题,我洗耳恭听。
非常感谢。
IIUC,您只是想重复相同的列表,对吗?在这个地方你可以使用 divmod
:
num = 14
i,j = divmod(num, len(lst)-1)
out = lst[1:] * i + lst[1:1+j]
输出:
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2]