我想从列表中删除重复(没有for循环)

时间:2017-10-15 12:34:56

标签: python

这里有一个清单

a = [1, 2, 1, 4, 5, 7, 8, 4, 6]

现在我想要一个跟随输出但没有for循环。 从列表中删除所有副本。

[2, 5, 7, 8, 6]

输出列表仅包含单个出现号

3 个答案:

答案 0 :(得分:1)

您可以使用Counter和条件列表理解或filter来维护原始订单:

from collections import Counter
c = Counter(a)
clean_a = filter(lambda x: c[x] == 1, a)  # avoids 'for' ;-)
# clean_a = list(filter(lambda x: c[x] == 1, a))  # Python3, if you need a list
# clean_a = [x for x in a if c[a] == 1]  # would be my choice

答案 1 :(得分:1)

鉴于:a = [1, 2, 1, 4, 5, 7, 8, 4, 6]

单线:

b = [x for x in a if a.count(x) == 1]

答案 2 :(得分:0)

这是一个非常简单且效率低下的实现。

我们使用while循环来访问a的每个元素。在循环中,我们检查当前元素是否仅在列表中出现一次。如果是,我们将其添加到新列表中。

a = [1, 2, 1, 4, 5, 7, 8, 4, 6]
index = 0
result = []
while index < len(a):
    if a.count(a[index]) == 1:
        result.append(a[index])
    index += 1

print(result)