python - For 循环迭代,范围从索引 1 重新开始

标签 python for-loop iteration

我试图以 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/

相关文章:

Python - 在具有不同条件的列表中查找下一个和上一个值

python - 如何拥有堆积条形的集群

c - 如何解决黑客等级的楼梯问题

python - 迭代字符串以获得频率

python - 导入 Bloomberg Api 时出错,如何解决?

python - 为什么我不能让 Google 的 Python 测试工作?

c++ - 如何打印数字列表,输出格式根据输入而不同?

javascript - Nightmare Promises with for..loop api calls, waterfall & anti-pattern (Bluebird.js)

java - 树问题-了解何时实现迭代解决方案何时实现递归解决方案

ruby - file.each_line 只能调用一次