代码之家  ›  专栏  ›  技术社区  ›  Patrick Connors

查找集合列表中所有集合中出现的元素[重复]

  •  1
  • Patrick Connors  · 技术社区  · 8 年前

    我有一份 n 整数集表示为 lst = [S1, S2, S3 ... Sn] 我想找到所有集合的交集。

    有没有最佳的方法可以做到这一点?

    2 回复  |  直到 8 年前
        1
  •  5
  •   Martijn Pieters    8 年前

    如果你有 列表 集合,您可以轻松获得它们的交点:

    set.intersection(*lst)
    

    这将生成一个新集合,其中仅包含所有集合之间通用的值:

    >>> lst = [{1, 2, 3}, {3, 5}, {2, 3}]
    >>> set.intersection(*lst)
    {3}
    
        2
  •  2
  •   plamut Hadi Akbarzadeh    8 年前

    编辑: 误读,认为您有多个数字列表,通常会询问如何找到所有列表中的数字。不过,将保留下面的原始答案,因为有些人仍然觉得它在某种程度上有所帮助。


    是的,它被称为集合交集,可以用于集合数据类型。

    演示:

    >>> s = set((1, 2, 3))
    >>> s2 = set((2, 3, 4))
    >>> s3 = set((3, 4, 5))
    >>> s & s2
    {2, 3}
    >>> s & s2 & s3
    {3}
    

    如果当前数据存储在列表中,则将其转换为集合只需将列表传递给 set() 建造商:

    >>> numbers = [2, 7, 9, 10]
    >>> set(numbers)
    {2, 7, 9, 10}
    

    但是,请记住,如果列表包含重复的元素,则该信息将丢失,并且每个重复的元素在结果交叉点中只存在一次。