代码之家  ›  专栏  ›  技术社区  ›  Mawg says reinstate Monica

Python查找列表1中不在列表2中的元素-简单代码不工作

  •  0
  • Mawg says reinstate Monica  · 技术社区  · 8 年前

    我有一些软件的所有需求清单 allRequirements requirementWithCoverage .

    许多网站和S.O的问题给出了这样的答案:

    notCovered = list(set(allRequirements) - set(requirementWithCoverage))
    

    然而:

    len(set(allRequirements)) 是779和
    len(set(requirementWithCoverage)) 是201, 但是
    len(set(notCovered)) 是650

    1 回复  |  直到 8 年前
        1
  •  2
  •   juanpa.arrivillaga    8 年前

    你所观察到的是因为 requirementWithCoverage 包含不在 allRequirements

    allRequirements         = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    requirementWithCoverage = [1,                7,           11, 12] # 11 and 12 are unexpectedly there
    notCovered              = list(set(allRequirements) - set(requirementWithCoverage))
    
    print(len(allRequirements))          # 10
    print(len(requirementWithCoverage))  #  4
    print(len(notCovered))               #  8 (6 was expected)
    

    您可以通过打印 set(requirementWithCoverage).issubset(set(allRequirements)) 这应该是错误的,而你期望它是正确的。
    保险范围内的要求

    print(set(requirementWithCoverage) - set(allRequirements))