python中如何找两个数组的相同部分

python中如何找两个数组的相同部分

作者:Joshua Lee发布时间:2026-01-14阅读时长:0 分钟阅读次数:5

用户关注问题

Q
如何高效找出两个数组中的公共元素?

我有两个数组,想快速找出它们共同包含的元素,Python中有哪些方法可以实现?

A

使用集合(set)操作找公共元素

可以将两个数组转换为集合,然后使用集合的交集操作获取公共元素。例如:

array1 = [1, 2, 3, 4]
array2 = [3, 4, 5, 6]
common_elements = list(set(array1) & set(array2))
print(common_elements)  # 输出 [3, 4]

这种方法在处理大量数据时特别高效。

Q
有没有办法保留数组中元素的顺序同时找出相同部分?

我想找出两个数组中的相同元素,并保持在第一个数组中的顺序,该如何实现?

A

利用列表推导按顺序筛选公共元素

将第二个数组转换为集合以便快速查找,然后用列表推导遍历第一个数组,将在集合中的元素保留下来:

array1 = [1, 2, 3, 4]
array2 = [3, 4, 5, 6]
set2 = set(array2)
common_ordered = [x for x in array1 if x in set2]
print(common_ordered)  # 输出 [3, 4]

这种方法能保持数组1元素的原始顺序。

Q
如何找到两个数组重复元素但考虑元素出现次数?

如果两个数组中某个元素出现多次,如何找出它们重复出现的部分及次数?

A

使用collections.Counter计算重复元素及出现次数

借助collections模块的Counter类计算两个数组的元素频率,再取频率较小的部分,示例如下:

from collections import Counter
array1 = [1, 2, 2, 3, 4]
array2 = [2, 2, 3, 3, 5]
c1 = Counter(array1)
c2 = Counter(array2)
common_counts = c1 & c2  # 交集计数
common_elements = list(common_counts.elements())
print(common_elements)  # 输出 [2, 2, 3]

该方法能准确表示两个数组中元素的重复部分。