首页 > 解决方案 > 有没有办法让一个循环有两个范围?

问题描述

我想从我的列表中取出 10 个值中的 1 个,但我也想取出最后一个 ( l[19])。

我们可以在循环中做一个双范围吗?

l=[1]*20
for i in range(0,20,10)and range(len(l)-1,len(l)):
    print("i ="+str(i),l[i]) 

还是没有双范围的其他方式?

l=[1]*20
for i in range(0,20,10):
    print("i = "+str(i), l[i]) 

预期的: "i = 0, 1", "i = 10, 1", "i = 19, 1"

实际结果:"i = 19, 1", python 2 的答案: 如何将非连续数字添加到范围?

我的实际python版本(python 3.7)的最佳(以我的拙见)答案:(因为我们不需要导入库或创建列表)

for i in [*range(0, len(l), 10)] + [len(l)-1]:
    print("i = {}, {}".format(str(i), l[i]))

谢谢大家的答案 !

标签: pythonfor-loop

解决方案


使用zip

for x, y in zip(range(10), range(10, 0, -1)):
...     print(x, y)
...
0 10
1 9
2 8
3 7
4 6
5 5
6 4
7 3
8 2
9 1

推荐阅读