【问题标题】:Excluding common element from list python [duplicate]从列表python中排除公共元素[重复]
【发布时间】:2012-03-27 18:39:04
【问题描述】:

可能重复:
Python, compute list difference

我有两个列表 例如:

A = [1,3,5,7]
B = [1,2,3,4,5,6,7,8]

现在,A 始终是 B 的子集 我想生成第三个列表 C: 它具有 B 中存在但 A 中不存在的元素 喜欢

C = [2,4..]

谢谢

【问题讨论】:

    标签: python


    【解决方案1】:

    List comprehensions 是一种方法:

    [x for x in B if x not in A]
    

    如果您使用 Python,我建议您熟悉列表推导式。它们是一个非常强大的工具。

    (有几个人建议使用set。虽然如果您只关心元素是否在集合中,这是一个非常好的主意,但请注意,它不会保留元素的顺序;列表推导会的。)

    【讨论】:

      【解决方案2】:
      >>> set(B) - set(A)
      set([8, 2, 4, 6])
      

      >>> sorted(set(B) - set(A))
      [2, 4, 6, 8]
      

      【讨论】:

        【解决方案3】:

        一个简单的方法是

        C = [x for x in B if x not in A]
        

        这对于大型列表会变得很慢,因此最好使用set 代替A

        A = set(A)
        C = [x for x in B if x not in A]
        

        如果您有多个这样的操作,则始终使用集合可能是最佳选择。如果 AB 是集合,你可以简单地做

        C = B - A
        

        【讨论】:

          【解决方案4】:
          C = sorted(list(set(B) - set(A)))
          

          应该可以的。

          【讨论】:

          • 不需要listsorted 总是产生一个列表。
          猜你喜欢
          • 2012-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-26
          • 1970-01-01
          • 2018-03-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多