Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查两个列表内容是否相同的最佳方法?_Python_Arrays_List - Fatal编程技术网

Python 检查两个列表内容是否相同的最佳方法?

Python 检查两个列表内容是否相同的最佳方法?,python,arrays,list,Python,Arrays,List,我有两张单子。内容可能不同。如果两个列表具有相同的内容,我将使用最佳方法检查并返回True。例如:[3,4,5]和[4,3,5]则必须返回True 这是我试过的 >>> x=[3,4,5] >>> y=[4,3,5] >>> x==y False >>> x is y False >>> x in y False 它不起作用, 但当我尝试使用sort时,它起了作用: >>> x.sort

我有两张单子。内容可能不同。如果两个列表具有相同的内容,我将使用最佳方法检查并返回True。例如:[3,4,5]和[4,3,5]则必须返回True

这是我试过的

>>> x=[3,4,5]
>>> y=[4,3,5]
>>> x==y
False
>>> x is y
False
>>> x in y
False
它不起作用, 但当我尝试使用sort时,它起了作用:

>>> x.sort()
>>> y.sort()
>>> x==y
True
这是正确的方法吗?有比这更好的吗???

您可以在这里使用set:
setx==sety

您已经有了一个更好的方法来确定两个列表中的内容是否相同

如果您的条件是内容必须相同,但顺序是可选的,那么使用排序和比较它们是一个非常好的解决方案

或者,您可以使用一种方法,不需要对两个列表进行排序,然后对它们进行比较。这假定列表包含int。但对于其他数据类型也可以做类似的事情

使用不需要对它们进行排序,并且可以确保每个元素的编号相同

>>> from collections import Counter
>>> a = [1,2,3,4]
>>> b = [4,3,2,1]
>>> Counter(a) == Counter(b)
True

散列值是一种方法。您的列表是否包含任何重复项?内容是什么?int?如果一个列表为[1,2,3],另一个列表为[1,1,2,3],则不正确。如果项是可散列的,则这似乎确实是最好的方法,并且已启用。下一个最好的方法是对可以排序的项目进行排序,而不是散列,这在logn上。如果项不可散列且无法排序,则最后一个方法位于^2。请参阅上文报告的副本。