【发布时间】:2021-10-28 06:13:37
【问题描述】:
我有一个清单:
lis = ['a', 'b', 'c', 'd', 'd', 'e', 'e']
我正在尝试使用推导来获取重复的值。
duplicates = set([x for x in lis if lis.count(x) > 1])
这会返回:
{'d','e'}
现在我从上面的集合中创建一个列表:
duplicates = list(set([x for x in lis if lis.count(x) > 1]))
我得到的输出为:
['e', 'd']
为什么顺序会改变?
【问题讨论】:
-
set数据结构无序 -
顺便说一句,这是一个非常低效的算法。不要使用
set,使用集合Counter,类似[k for k,v in Counter(data) if v > 1]
标签: python python-3.x list-comprehension