检查一个元组列表是否相同。

4

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


6
a == b 怎么样? - jwilner
3个回答

4
您可以使用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

2
如果输入的长度不相同,这将会出现问题。 - jwilner
@jwilner 你说得完全正确,我会尝试修复它。 - Mark Ransom
1
但实际上,这很荒谬 - 为什么有人要尝试重新实现序列的相等性呢? - jwilner
如果长序列的最后几个元素等于填充值(默认为None),则此方法仍然失败。 - jwilner
len(list_1) == len(list_2) and ... 但是请注意,这只是一种练习。 - jwilner

0
在Python 3.x中,您可以这样检查两个元组列表a和b: 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接