如果以前曾经问过我,我很抱歉,但我想打印名为" 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:范围对象索引超出范围
如何解决这个问题?
答案 0 :(得分:2)
range(1, 75)
代表数字1..74
。它有索引0..73
。
my_list[74]
将是IndexError,因为最大的索引是73
。
正如其他答案所提到的,似乎你错误的价值指数。 Python中的for foo in bar
为bar
提供了所有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超出范围。 [解决]