Crossin的编程教室
标题:
每日一坑(二)去除重复python
[打印本页]
作者:
mickyliumo
时间:
2016-7-12 15:22
标题:
每日一坑(二)去除重复python
def delrepeat(list):
newlist = []
for i in range(len(list)):
x = list[i]
n = list.count(x)
if n==1:
newlist.append(x)
else:
del(x)
newlist.sort()
print (newlist)
各位大神小白求帮忙,我的想法是count这个list中有多少个元素,如果是一个就放到新的newlist,如果不是就删掉,但是这个程序最后的结果是重复的删掉了却没有放掉新的list,但是我不理解哪里错了……
因为我的思路是这样的,如果在[1,2,3,4,5,1]这个list中,1是重复的
那么在这个程序中,i=0的时候,发现list.count(1)=2,所以删掉了list[0],
但是当i=5的时候,发现list.count(5)=1,所以就要将list[5]写入newlist
劳烦大神们帮帮小白!
作者:
crossin先生
时间:
2016-7-13 11:04
直接导致的问题原因:
del(x) 只是删掉 x 这个变量,和你的 list 无关,你大概想用的是 list.remove(x)
但是,你这么改还是有问题。在遍历列表过程中去删除列表是个很不好的操作,会导致列表元素个数变少,然后下标越界。
所以建议你改下思路。可以判断一个元素是否在新列表中,如果不在就加进去,如果在就忽略。
其它的问题:
不要用 list 做变量名,这是列表类的关键字。
for i in range(len(list)) 这种写法不好,为什么不直接 for x in list
作者:
mickyliumo
时间:
2016-7-13 19:38
确实会有下标越界的问题。受教了。我再改改试试
非常感谢
欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/)
Powered by Discuz! X2.5