这怎么会超出范围?

时间:2015-10-04 14:52:07

标签: python python-2.7 for-loop runtime-error

我尝试运行这个小循环。我收到一个错误:

for i in range(len(lst)):
    if lst[i] > lst[i+1]:
        lst[i],lst[i+1] = lst[i+1],lst[i]

错误:

Traceback (most recent call last):
  File "C:/Python27/bubblesort.py", line 10, in <module>
IndexError: list index out of range

我无法理解这一点,我错过了什么?有人帮忙。

3 个答案:

答案 0 :(得分:3)

当你列出最后一个索引i时,你再次递增它.... lst [i + 1]

答案 1 :(得分:2)

i一直到len(lst) - 1,这是lst中的最后一个索引。但是你再添加1个,超出了最后一个索引:

>>> lst = ['foo', 'bar', 'baz']
>>> len(lst)
3
>>> lst[2]  # length - 1 is the last element
'baz'
>>> lst[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

range()限制为长度减去1(因此最后i值为len(lst) - 2)

for i in range(len(lst) - 1):

答案 2 :(得分:0)

Python列表索引从0开始,而不是从1开始。例如,

list = ['a','b','c']
for element in list:
    print element,
    print list.index(element)

输出

a 0
b 1
c 2

print len(list)

输出

3