提问人:Jeremy 提问时间:4/5/2016 最后编辑:Timur ShtatlandJeremy 更新时间:11/16/2023 访问量:178785
如何在python中比较两个有序列表?
How can I compare two ordered lists in python?
问:
我有两个清单:
a = [0,2,1]
b = [0,2,1]
如何比较这两个列表以查看它们是否相等/相同,并限制它们必须具有相同的顺序?
我看到过要求通过对两个列表进行排序来比较两个列表的问题,但在我的具体情况下,我不是在检查排序比较,而是在检查相同的列表比较。
答:
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
评论