有很多方法可以实现删除List中的重复元素,本文介绍其中的4种。
使用set
python中的set,表示一个集合,集合内不含重复元素。因此,该方法的思路是,将list中的所有元素导入set,然后再把set重新导出到list。
>>> alist = [1,1,2,2,3,3,3,4,5,6,6]
>>> alist = list(set(alist))
>>> alist
[1, 2, 3, 4, 5, 6]
使用Dict的Key
Dict类型数据的Key值具有与set中元素一样的属性,即不能重复。因此,该方法的思路与使用set一样,只是换成了Dict类型中的Key。
>>> alist = [1,1,2,2,3,3,3,4,5,6,6]
>>> b = {}
>>> b = b.fromkeys(alist)
>>> b
{1: None, 2: None, 3: None, 4: None, 5: None, 6: None}
>>> alist = list(b.keys())
>>> alist
[1, 2, 3, 4, 5, 6]
使用List对象的count函数
count函数是List对象的成员函数,它返回某个值在list中出现的次数。如果出现次数不是1,就将其删除,知道出现次数变为1即可。
alist = [1,1,2,2,3,4,5,5,6,6,6,7,8,9,9,9]
i = 0
while True:
if i == len(alist): break
if alist.count(alist[i]) != 1:
alist.pop(i)
continue
else:
i += 1
print(alist)
这段代码还用到了list对象的pop函数,请参考关于list对象的成员函数的整体介绍。使用remove函数代替pop也可以,只是参数不能使用index,稍微麻烦一点点。
使用List对象的append函数
我们可以先创建一个空的List对象,然后一个个的将原来的List对象中的元素append进新的list,只是在append之前,判断一下此元素是否已经存在。
alist = [1,1,2,2,3,4,5,5,6,6,6,7,8,9,9,9]
blist = []
for i in range(len(alist)):
if alist[i] not in blist:
blist.append(alist[i])
print(blist)
当然在python中,肯定还有很多方法可以实现删除List中的重复元素。比如使用sort函数排序,然后通过比较删除重复的元素。。。最简单的,我觉得就是使用set的方法。
-- EOF --