我试图以 2 个索引的步长迭代一个循环,一旦到达末尾,就重新启动相同的循环,但这次从索引 1 而不是零开始。
我已经阅读了堆栈上的不同文章,例如 this使用 while 循环解决方法。但是,我正在寻找一个选项,它只需使用 for 循环中的元素和范围,而不使用 itertool 或其他库或嵌套循环:
这是我的代码:
j = [0,0,1,1,2,2,3,3,9,11]
count = 0
for i in range(len(j)):
if i >= len(j)/2:
print(j[len(j)-i])
count += 1
else:
count +=1
print(j[i*2],i)
这是输出:
0 0
1 1
2 2
3 3
9 4
2
2
1
1
0
循环不会从应该的位置开始。 这是所需的输出:
0 0
1 1
2 2
3 3
9 4
0 5
1 6
2 7
3 8
11 9
如何修复它?
最佳答案
您可以通过组合两个 range()
调用来实现此目的,例如:
代码:
j = [0, 0, 1, 1, 2, 2, 3, 3, 9, 11]
for i in (j[k] for k in
(list(range(0, len(j), 2)) + list(range(1, len(j), 2)))):
print(i)
并使用 itertools 解决方案:
import itertools as it
for i in it.chain.from_iterable((it.islice(j, 0, len(j), 2),
it.islice(j, 1, len(j), 2))):
print(i)
结果:
0
1
2
3
9
0
1
2
3
11
关于python - For 循环迭代,范围从索引 1 重新开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48678553/