gpt4 book ai didi

python - 如何根据python中另一个列表中的元素过滤列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:02 26 4
gpt4 key购买 nike

我有一个包含大约 62,000 个数字的列表 A,以及另一个包含大约 370,000 个数字的列表 B。我想过滤 B 以便它只包含来自 A 的元素。我试过这样的事情:

A=[0,3,5,73,88,43,2,1]
B=[0,5,10,42,43,56,83,88,892,1089,3165]
C=[item for item in A if item in set(B)]

这行得通,但对于如此大的列表来说显然非常慢,因为(我认为?)搜索会继续遍历整个 B,即使元素已经在 B 中找到。所以脚本正在遍历 370,000 个列表元素 62,000 次。

A 和 B 中的元素是唯一的(B 包含 0 到 700,000 之间的唯一值列表,A 包含这些值的唯一子集)所以一旦在 B 中找到 A[i],搜索就可以停止。如果这意味着什么,这些值也按升序排列。

有什么方法可以更快地做到这一点?

最佳答案

这是为 A 中的每个项目创建一个新的 set(B)。而是使用内置的 set.intersection:

C = set(A).intersection(B)

关于python - 如何根据python中另一个列表中的元素过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55171124/

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