如何删除队列重复元素呢?简单地说,我们有两种实现的方法:
1.借助set函数先将列表转化为集合:
a=[1,3,1,2,4,2,5,6]
print(list(set(a)))
这种方法有两个局限:第一,转化后的list不再保持原有的顺序(因为set和dict一样是无序的);第二,如果列表中存在可变元素(list,dict,etc),那么也不能借助set来实现:
a=[1,3,1,2,[4,2],5,[4,2],6,[2,4]]
print(set(a))
报错:
TypeError: unhashable type: 'list
2.利用生成器:
a=[1,3,1,2,[4,2],5,[4,2],6,[2,4]]
def del_repeat(lst):
m=[]
for i in lst:
if i not in m:
yield i
m.append(i)
print(list(del_repeat(a)))
运行结果:
[1, 3, 2, [4, 2], 5, 6, [2, 4]]
既保留了原有顺序,又解决了unhashable类型!