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

How can I compare two ordered lists in python?

提问人:Jeremy 提问时间:4/5/2016 最后编辑:Timur ShtatlandJeremy 更新时间:11/16/2023 访问量:178785

问:

我有两个清单:

a = [0,2,1]
b = [0,2,1]

如何比较这两个列表以查看它们是否相等/相同,并限制它们必须具有相同的顺序?

我看到过要求通过对两个列表进行排序来比较两个列表的问题,但在我的具体情况下,我不是在检查排序比较,而是在检查相同的列表比较。

Python 列表 相等性

评论


答:

255赞 Maxime Lorant 4/5/2016 #1

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

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

如果同一索引处的元素相等,则列表相等。然后考虑排序。

评论

6赞 Alex Reynolds 2/10/2020
这可能会返回以下带有 numpy 列表的错误:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
1赞 Julio Batista Silva 6/4/2020
@AlexReynolds说了什么。您必须使用 或 进行测试。all(arr1 == arr2)(arr1 == arr2).all()
3赞 wjandrea 9/7/2020
@Alex 这是一个数组,而不是一个列表。它们都是有序数据类型,但在概念上有所不同。应用于数组的操作将应用于其所有元素,但对于列表则不然。
14赞 Vasanth 4/5/2016 #2

如果您只想检查它们是否相同,则应在考虑排序的情况下为您提供真/假。a == b

如果你想比较元素,你可以使用 numpy 进行比较

c = (numpy.array(a) == numpy.array(b))

在这里,c 将包含一个包含 3 个元素的数组,所有这些元素都是真的(例如)。如果 a 和 b 的元素不匹配,则 c 中的相应元素将为 false。

评论

1赞 Pulkit Bansal 5/14/2020
然后检查 c.all() 是否为 True
6赞 Abhiram 4/5/2016 #3

表达式应该可以完成这项工作。a == b