gpt4 book ai didi

python - 计算列表中非唯一项的总数

转载 作者:行者123 更新时间:2023-12-01 21:45:35 24 4
gpt4 key购买 nike

我正在寻找最省时的方法来计算 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 秒)。

非常感谢所有的帮助!

最佳答案

Counter 对象应该更快,因为在您的版本中,您正在对列表中的每个项目调用 count(),因此每个问题调用 100,000 次。这将对整个列表执行一次 Count(),然后对 Counter 对象的迭代将只对每个唯一值执行一次。

original_list = [1, 4, 6, 2, 2, 1, 5, 3, 2]

from collections import Counter
count = Counter(original_list)

dupes = sum(v for k, v in count.items() if v > 1)

关于python - 计算列表中非唯一项的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60731456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com