Python 3.4 - 范围对象索引超出范围

时间:2016-01-28 23:40:09

标签: python list range

如果以前曾经问过我,我很抱歉,但我想打印名为" my_list的列表中的所有元素。"

此代码有效:

my_list = range(75)

for i in my_list:
    print (my_list[i])

但是这段代码......

my_list = range(1, 75)

for i in my_list:
    print (my_list[i])

...生成以下错误:IndexError:范围对象索引超出范围

如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

range(1, 75)代表数字1..74。它有索引0..73

my_list[74]将是IndexError,因为最大的索引是73

正如其他答案所提到的,似乎你错误的价值指数。 Python中的for foo in barbar提供了所有VALUES,而不是索引。

enumerate是从迭代中获取索引和值的常用工具。它在range对象上有点傻,但你可以这样做:

my_list = range(1, 75)

for i, val in enumerate(my_list):
    print(my_list[i])  # my_list[i] == val

enumerate(bar)基本上只是zip(range(len(bar)), bar)

答案 1 :(得分:2)

你可以遍历列表;你把索引与元素混淆了。您是以下之一:

for i in my_list:
    print (i)

- 或 -

for i in range(len(my_list)):
    print (my_list[i])

为了说明你所做的更严重的版本,试试这个:

my_list = range(5, 15)
print my_list

for i in range(5, 15):
    print (i, my_list[i])

输出:

[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
5 10
6 11
7 12
8 13
9 14
10
IndexError: list index out of range

答案 2 :(得分:0)

您正在遍历i中的每个my_list。您想要打印i

my_list = range(1, 75)

for i in my_list:
    print i

答案 3 :(得分:0)

很简单,你必须编码如下。

my_list = range(0, 76)

for i in my_list:
    print (my_list[i])

这个代码将清除你的IndexError:list index超出范围。 [解决]