我尝试运行这个小循环。我收到一个错误:
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
我无法理解这一点,我错过了什么?有人帮忙。
答案 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