小能豆

如何在 python 中比较两个列表并返回匹配项

python

我想要获取两个列表并找出同时出现在这两个列表中的值。

a = [1, 2, 3, 4, 5]
b = [9, 8, 7, 6, 5]

returnMatches(a, b)

[5]例如将返回。


阅读 42

收藏
2024-06-28

共1个答案

小能豆

您可以使用 Python 的集合运算来实现这一点,它提供了一种简单而有效的方法来查找两个列表的交集。以下是一个接受两个列表并返回公共元素的函数:

Python复制代码def returnMatches(a, b):
    return list(set(a) & set(b))

# Example usage
a = [1, 2, 3, 4, 5]
b = [9, 8, 7, 6, 5]

print(returnMatches(a, b))  # Output: [5]

解释:

  1. 将列表转换为集合
  2. set(a)将列表转换a为集合。
  3. set(b)将列表转换b为集合。
  4. 交叉口操作
  5. set(a) & set(b)对两个集合执行交集运算,得到一个包含和中都存在的元素的a集合b
  6. 将集合转换为列表
  7. list(set(a) & set(b))将结果集转换回列表。

不使用集合的替代方法:

如果你不想使用集合,你可以使用列表推导来实现相同的结果:

def returnMatches(a, b):
    return [item for item in a if item in b]

# Example usage
a = [1, 2, 3, 4, 5]
b = [9, 8, 7, 6, 5]

print(returnMatches(a, b))  # Output: [5]

此方法遍历列表中的每个元素a,如果它也存在于列表中,则将其包含在结果中b

概括:

  • 基于集合的方法通常更有效,特别是对于大型列表,因为集合查找的时间复杂度平均为 O(1)。
  • 列表推导方法简单易懂,但是由于in列表运算符的时间复杂度为 O(n),因此对于大型列表而言,速度可能会较慢。

选择最适合您的需求和编码风格的方法。

2024-06-28