我试图以与现在相同的顺序从列表中提取唯一项目。我尝试了以下但它不起作用。谁能告诉我出了什么问题?谢谢。
b = []
a = [10, 20, 340, 20, 10]
b = [i for i in a if i not in b]
print a
编辑:我已经看到类似的问题来完成这项任务。我想知道我的代码中出了什么问题。
答案 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)