这里有一个清单
a = [1, 2, 1, 4, 5, 7, 8, 4, 6]
现在我想要一个跟随输出但没有for循环。 从列表中删除所有副本。
[2, 5, 7, 8, 6]
输出列表仅包含单个出现号
答案 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)