应用后从列表中提取重复项

2024-03-29 15:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写代码片段,以便从列表中提取重复项。我在这个网站上看到了几个实现/解决方案。然而,我并没有正确地理解这句话——我认为是语法方面的。排序后,比较索引(x)和索引(x+1)。如果是,则添加到集合中。你知道吗

print(set([i for i in a if (a[i] == a[i+1]))

a = [1,2,3,2,1,5,6,5,5,5]
print(a)
print(set(sorted(a)))
# l1[i] == l1[i+1]
print(set([i for i in a if (a[i] == a[i+1]))
print(set([i for i in a if sum([1 for item in a if item == i]) > 1]))

预期结果:{1,2,5}


Tags: 代码inl1列表forif排序网站
3条回答

这个怎么样?你知道吗

a = [1,2,3,2,1,5,6,5,5,5]
duplicates = set(element for element in a if a.count(element) > 1)
print(duplicates)

输出:

{1, 2, 5}

据我所知,您正在尝试实现此逻辑,此代码以O(nlogn)时间复杂度运行,而与计数器一起运行的代码以O(n)时间复杂度运行意味着它更快、更干净。你知道吗

a = [1,2,3,2,1,5,6,5,5,5]
a.sort()
print(set([a[i] for i in range(len(a)-1) if (a[i] == a[i+1])]) )

输出

set([1, 2, 5])

您可以使用^{}

from collections import Counter

a = [1,2,3,2,1,5,6,5,5,5]
c = Counter(a)

res = [n for n, m in c.items() if m > 1]
print(res)  # [1, 2, 5]

这样,您可以在列表上迭代一次,只在计数器上迭代一次。你知道吗

相关问题 更多 >