【问题标题】:Checking if a list of tuples are the same检查元组列表是否相同
【发布时间】:2015-05-28 03:33:19
【问题描述】:

有没有一种简单的方法可以查看 python 中的元组列表是否相同(每个位置的元组相同,如果对应的元素相同,则元组相同)?我知道如何手动循环遍历列表并比较每个元素,但想知道是否有任何库函数可以做到这一点?

【问题讨论】:

  • a == b 怎么样?

标签: python list compare tuples


【解决方案1】:

您可以使用 cmp() 比较两个列表的元素。

list1 = [('a', 1), ('b', 1)]
list2 = [('a', 1), ('b', 1)]

print cmp(list1, list2)

如果我们到达其中一个列表的末尾,则较长的列表“更大”。如果我们用尽两个列表并共享相同的数据,则结果为平局,即返回 0。

【讨论】:

    【解决方案2】:
    len(list1) == len(list2) and all(a == b for a,b in zip(list1, list2))
    

    这是我的第一个猜测,但我只是尝试了显而易见且简单的解决方案,并且也很有效:

    list1 == list2
    

    【讨论】:

    • 如果输入的长度不同,就会出现问题。
    • @jwilner 你说的很对,我会努力改正的。
    • 但这真的很愚蠢——为什么有人会尝试重新实现序列的相等性?
    • 如果较长序列的最后一项等于填充符,这仍然会失败(默认为无)。
    • len(list_1) == len(list_2) and ... 但同样,这应该被视为一种练习。
    【解决方案3】:

    python 3.x,你可以检查两个元组列表 ab 因此:

    import operator
    
    a = [(1,2),(3,4)]
    b = [(3,4),(1,2)]
    # convert both lists to sets before calling the eq function
    print(operator.eq(set(a),set(b))) #True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 2011-04-20
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多