我试图迭代循环,当时有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
我该如何解决?
答案 0 :(得分:2)
您可以通过组合两个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
答案 1 :(得分:1)
另一个itertools
解决方案:
import itertools as it
lst = [0, 0, 1, 1, 2, 2, 3, 3, 9, 11]
a, b = it.tee(lst)
next(b)
for i, x in enumerate(it.islice(it.chain(a, b), None, None, 2)):
print(x, i)
输出
0 0
1 1
2 2
3 3
9 4
0 5
1 6
2 7
3 8
11 9