【发布时间】:2020-03-17 23:10:48
【问题描述】:
我正在寻找最省时的方法来计算 Python 的大型列表(大约 100,000 项)中非唯一项的数量。
我目前的方法:
original_list = [1, 4, 6, 2, 2, 1, 5, 3, 2]
duplicates_list = []
for item in original_list:
if original_list.count(item) > 1:
duplicates_list.append(item)
duplicates_count = len(duplicates_list)
print(duplicates_count)
# Should give the following answer:
5
目前,大约 70-80K 项的大型列表需要 1-2 分钟来执行计算。我想知道我们是否可以尽可能减少计算所需的时间(可能是 3-10 秒)。
非常感谢所有帮助!
【问题讨论】:
-
len(original_list) - len(set(original_list))@TimeAndPlaces -
@Todd 我需要计算具有重复项的所有副本。我相信您的解决方案还将删除每个具有重复项的 1 个副本。
-
@Todd 这不起作用。它计算的是过剩的数量,而不是该集合的人口。
-
没错,它只会计算重复的数量,不包括原始项目。
-
@Todd 你不能
+ 1吗?
标签: python list optimization duplicates