删除List中重复元素的方法

2019年12月4日 / 5次阅读 / Last Modified 2019年12月4日

有很多方法可以实现删除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 --

本文链接:https://www.pynote.net/archives/1575

相关文章

    留言区

    电子邮件地址不会被公开。 必填项已用*标注


    前一篇:

    More

    麦新杰的Python笔记

    Ctrl+D 收藏本页


    ©Copyright 麦新杰 Since 2019 Python笔记

    go to top