|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码一,从列表最后一个向前比较,如果一样就删除,不一样就复制给last,再向前比较
这样正常排出来
代码二,从前向后比较,道理一样,但就是不行,报IndexError: list index out of range
我看来看去没有超出范围啊?请高手帮忙看看到底问题在哪里
代码一:
a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
a.sort()
last = a[-1]
for i in range(len(a)-2,-1,-1):
if last == a[i]:
del a[i]
else:
last = a[i]
print(a)
代码二:
a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
a.sort()
first = a[0]
for i in range(1,len(a)):
if first == a[i]:
del a[i]
else:
first = a[i]
print(a)
本帖最后由 冬雪雪冬 于 2017-8-9 08:59 编辑
因为删除元素后,a的总元素数变少了,而循环仍是range(1,len(a)):,这样就会越界。
其实在循环中增减元素的方法都不是最佳的办法,不注意的话容易出错,可以另生成新列表来解决次问题。
- a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
- a.sort()
- b = [a[0]]
- first = a[0]
- for i in range(1,len(a)):
- if first != a[i]:
- b.append(a[i])
-
- first = a[i]
- print(b)
复制代码
|
|