删除列表中的重复项不起作用

时间:2017-07-22 15:29:46

标签: python list

我试图以与现在相同的顺序从列表中提取唯一项目。我尝试了以下但它不起作用。谁能告诉我出了什么问题?谢谢。

b = []
a = [10, 20, 340, 20, 10]
b = [i for i in a if i not in b]
print a

编辑:我已经看到类似的问题来完成这项任务。我想知道我的代码中出了什么问题。

5 个答案:

答案 0 :(得分:3)

不要使用列表推导,只需使用这个简单的for循环来实现你想要的东西:

b = []
a = [10, 20, 340, 20, 10]
for i in a:
    if i not in b:
        b.append(i)

<强>输出:

>>> b
[10, 20, 340]

答案 1 :(得分:1)

试试这种方式

>>> from collections import OrderedDict
>>> a=[10,20,340,20,10]
>>> list(OrderedDict.fromkeys(a))
[10,20,340]

订单应保持不变,例如

>>> from collections import OrderedDict
>>> items = [1, 2, 0, 1, 3, 2]
>>> list(OrderedDict.fromkeys(items))
[1, 2, 0, 3]

答案 2 :(得分:1)

from collections import OrderedDict


a = [10, 20, 340, 20, 10]
b = list(OrderedDict.fromkeys(a))
print(b)

# python /tmp/wat.py
# [10, 20, 340]

答案 3 :(得分:1)

您的新数组b在评估not in b时不包含任何元素。

Python首先根据列表推导创建一个新列表,然后将其分配给b

实现这一目标的方法有很多种。 Stackoverflow和互联网有很多解决方案。我赞成可读解决方案,例如:

list1 = [1,2,3,2,3,1,5,4,2,3]
result = []
for i in list1:
    if i not in result:
        result.append(i)

虽然这不是最有效的方法,但我更重视可读性。

答案 4 :(得分:-4)

也可以试试这个,

int compare(Employee o1, Employee o2)