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


正如其他答案所提到的,似乎您将索引误认为值中的code>for foo提供了
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])