如何在Python中比较两个有序列表?

150
我有两个列表:
a = [0,2,1]
b = [0,2,1]

如何比较这两个列表,以确定它们是否完全相同,并且必须按照相同的顺序排列?
我看到有人问如何通过排序来比较两个列表,但在我的情况下,我不是在进行排序比较,而是进行完全相同的列表比较。
3个回答

250

只需使用经典的 == 运算符:

>>> [0,1,2] == [0,1,2]
True
>>> [0,1,2] == [0,2,1]
False
>>> [0,1] == [0,1,2]
False

如果两个列表在相同的索引位置上拥有相等的元素,则这两个列表是相等的。此时考虑元素的顺序。


6
使用numpy列表可能会返回以下错误:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() - Alex Reynolds
1
就像 @AlexReynolds 所说的那样。你必须使用 all(arr1 == arr2)(arr1 == arr2).all() 进行测试。 - Julio Batista Silva
2
@Alex 这是一个数组,而不是列表。它们都是有序数据类型,但在概念上是不同的。你对一个数组执行的操作会应用于其所有元素,但对于列表来说并非如此。 - wjandrea

14
如果你只想检查它们是否相同,a == b应该会给你一个考虑顺序的true/false。
如果你想比较元素,可以使用numpy进行比较。 c = (numpy.array(a) == numpy.array(b)) 这里,c将包含一个数组,其中三个元素都为true(对于你的示例)。如果a和b的元素不匹配,则c中对应的元素将为false。

1
然后检查 c.all() 是否为 True。 - Pulkit Bansal

6
表达式a == b应该可以完成任务。

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