📜  Python|多个列表的交集(1)

📅  最后修改于: 2023-12-03 15:34:19.083000             🧑  作者: Mango

Python | 多个列表的交集

在编程中,我们有时需要找到多个列表中的共同元素,这就是所谓的“交集”。Python提供了几种方法来实现这个目标。

方法一:使用for循环和if语句

我们可以使用for循环和if语句来找到多个列表中的共同元素。具体步骤如下:

  1. 创建一个空列表result,用于存放共同元素;
  2. 遍历其中一个列表,将列表中的每个元素与其他列表中的元素比较,如果存在于其他列表中,则将其加入result中;
  3. 返回result列表。

下面是实现代码:

def intersection(lists):
    result = []
    for element in lists[0]:
        if all(element in sublist for sublist in lists[1:]):
            result.append(element)
    return result

# 示例
list1 = [1,2,3,4,5]
list2 = [2,3,4,5,6]
list3 = [4,5,6,7,8]
print(intersection([list1, list2, list3]))
# 输出 [4, 5]
方法二:使用set.intersection()方法

Python中set类提供了intersection()方法来获取多个集合或列表的交集。具体步骤如下:

  1. 创建一个set对象set1,将其中一个列表转换为set并赋值给set1;
  2. 遍历其他列表,将它们也转换为set,然后使用intersection()方法获取它们和set1的交集,更新set1;
  3. 将set1转换为list并返回。

下面是实现代码:

def intersection(lists):
    set1 = set(lists[0])
    for sublist in lists[1:]:
        set1 = set1.intersection(sublist)
    return list(set1)

# 示例
list1 = [1,2,3,4,5]
list2 = [2,3,4,5,6]
list3 = [4,5,6,7,8]
print(intersection([list1, list2, list3]))
# 输出 [4, 5]
方法三:使用reduce()函数和set.intersection()方法

我们还可以使用reduce()函数和set类的intersection()方法来找到多个列表的交集。具体步骤如下:

  1. 导入reduce()函数;
  2. 将各个列表转换为set并以列表形式组成一个新列表;
  3. 使用reduce()函数和set.intersection()方法获取这个新列表的交集;
  4. 返回交集。

下面是实现代码:

from functools import reduce

def intersection(lists):
    sets = list(map(set, lists))
    return list(reduce(set.intersection, sets))

# 示例
list1 = [1,2,3,4,5]
list2 = [2,3,4,5,6]
list3 = [4,5,6,7,8]
print(intersection([list1, list2, list3]))
# 输出 [4, 5]

以上是三种实现方法,可以根据实际需求选择其中一种方法。