似乎无法获得此for循环与范围一起使用

时间:2019-03-10 23:28:33

标签: python-3.x for-loop range

numbers = [5, 9, 13, 17, 21] 

for list in range(5,22,4): 
    print(numbers[list], end =" ")

似乎无法使其正常工作,请不断获得

  

IndexError:列表索引超出范围

2 个答案:

答案 0 :(得分:1)

您的数字变量的索引为0-4(python从0开始并从0开始递增)-您的range命令为您提供数字:

[5, 9, 13, 17, 21]

您要告诉python您要以5为步长从4跳到22,这意味着当您尝试打印数字[list]时,变量list实际上是for循环的迭代中的索引5,将不在numbers变量的索引范围内,因为它仅具有索引0、1、2、3和4

答案 1 :(得分:1)

您的代码似乎混淆了解决同一任务的两种方法。

一个正在打印现有数字列表:

numbers = [5, 9, 13, 17, 21] 

for number in numbers: 
    print(number, end=" ")

# or, alternatively

for index in range(len(numbers)): 
    print(numbers[index], end=" ")

另一个正在使用range()函数生成相同的数字序列:

for number in range(5,22,4):
    print(number, end=" ")

# or, reusing one of the previous approaches

numbers = range(5,22,4)

for number in numbers: 
    print(number, end=" ")

请记住,range()创建了一个范围对象,该对象适用于枚举和索引编制,但不支持其他列表操作,例如切片,串联和重复(与自身串联)。如果要获取numbers作为列表,请明确编写:

numbers = list(range(5,22,4))

然后您可以执行以下操作:

for number in numbers * 2: 
    print(number, end=" ")

它将两次打印您的数字序列。