python - 从列表中删除重复元素

标签 python list python-2.7 duplicates

我正在尝试从列表中删除重复的元素:

li = [11, 11, 2, 3, 4]

我正在尝试这些方法:

方式一:

li = [x for x in li if x!=11]

方式2:

for x in range(0,len(li)):
    if x==11:
        li.remove(x)

是否有任何内置函数可以完成这项工作?

最佳答案

编辑:

抱歉,我最初看错了你的问题。

你真正想要的是collections.Counter和列表理解:

>>> from collections import Counter
>>> li= [11, 11, 2, 3, 4]
>>> [k for k, v in Counter(li).iteritems() if v == 1]
[3, 2, 4]
>>>

这只会保留列表中仅出现一次的项目。


如果顺序不重要,那么您可以简单地使用 set :

>>> li = [11, 11, 2, 3, 4]
>>> list(set(li))
[3, 2, 11, 4]
>>>

否则,您可以使用 .fromkeys方法collections.OrderedDict :

>>> from collections import OrderedDict
>>> li= [11, 11, 2, 3, 4]
>>> list(OrderedDict.fromkeys(li))
[11, 2, 3, 4]
>>>

关于python - 从列表中删除重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26819135/

相关文章:

python - 列表列表中的排列

java - 在java中覆盖列表结果类型

具有一些功能的 Python 键盘记录器

python - django 国家货币代码

python - 如何设置 Postgres 扩展?

python - 如何在 mac 上为 2.7 设置 python 路径?

python - 将 Python 字符串列表转换为 float ,其中列表还包含单词

python - Django/Python 错误。 "ImportError: Import by filename is not supported."

Python Jupyter Notebook - 无法通过路径打开 CSV 文件

python - virtualenvwrapper: `workon`何时更改为项目目录?