Python 3.4-范围对象索引超出范围
如果以前有人问过这个问题,我很抱歉,但我想打印名为“我的列表”的列表的所有元素 此代码适用于:Python 3.4-范围对象索引超出范围,python,list,range,Python,List,Range,如果以前有人问过这个问题,我很抱歉,但我想打印名为“我的列表”的列表的所有元素 此代码适用于: 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]) …生成以下错误:索引器错误:范围对象索引超出范围 如何解决这个问题?范围(1,75)表示数字1..74。它有索引0..73 我的列表
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])
…生成以下错误:索引器错误:范围对象索引超出范围
如何解决这个问题?范围(1,75)
表示数字1..74
。它有索引0..73
我的列表[74]
将成为索引器,因为最大的索引是73
正如其他答案所提到的,似乎您将索引误认为值
bar
中的所有值,而不是索引
enumerate
是从iterable获取索引和值的常用工具。在范围对象上有点傻,但您可以这样做:
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)
您可以在列表中迭代;你把索引和元素混淆了。您可以选择以下选项之一:
for i in my_list:
print (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
您正在迭代myu列表中的每个i
。您想打印i
:
my_list = range(1, 75)
for i in my_list:
print i
很简单,您必须按照下面的代码编写
my_list = range(0, 76)
for i in my_list:
print (my_list[i])
输入此代码,这将清除索引器:列表索引超出范围。
[已解决]在序列上迭代会得到元素,而不是索引。另外,range
在Python 3中返回一个range对象,而不是列表。@user2357112您仍然可以为range@AdamSmith当前位置确实可以。这并不意味着它是一个列表,如果提问者试图对确实需要列表的范围对象执行任何操作,他们会得到更多错误。请注意,范围中的索引在索引0中的值为1,在索引73中的值为74。所以你需要打印我的清单[i-1]@user2357112这是一个有用的警告,但它不是OP出错的原因。指出这一点似乎很重要。你还应该告诉他打印我的清单[i-1]以获得正确的答案values@sabbahillel对于范围(x,y)
,这不是很容易扩展的。最好完全放弃这种方法。我只是回答了给出的问题。然而,使用i-x可以处理一般情况。@sabbahillel在Python中,我从来没有机会为范围
对象编制索引。我很确定更普遍的情况是“不要这样做”。但这不是这里也不是那里。可能。我试图指出他是否想按照问题中的方式处理。您可以添加解释,解释为什么首先会出现错误索引器。
my_list = range(0, 76)
for i in my_list:
print (my_list[i])