Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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 - Fatal编程技术网

Python 如何比较包含相同元素的两个列表的顺序?

Python 如何比较包含相同元素的两个列表的顺序?,python,Python,我试图确定一个列表的排序方式是否与包含相同元素的另一个列表的排序方式相同。例如: a = ['a', 'b', 'c'] b = ['b', 'c', 'a'] if a != b: print("Wrong order") 我希望能够确定两个列表是否具有相同的顺序。无论是略有不同还是完全不同,我只需要能够判断它们是否不同。您可以简单地比较列表的排序版本: if a == b: print 'Same elements, same order' elif sorted(a) == s

我试图确定一个列表的排序方式是否与包含相同元素的另一个列表的排序方式相同。例如:

a = ['a', 'b', 'c']
b = ['b', 'c', 'a']

if a != b:
  print("Wrong order")

我希望能够确定两个列表是否具有相同的顺序。无论是略有不同还是完全不同,我只需要能够判断它们是否不同。

您可以简单地比较列表的排序版本:

if a == b:
  print 'Same elements, same order'
elif sorted(a) == sorted(b):
  print 'Same lists, different order'
else:
  print 'Completely differeent'

当然,有更有效的方法可以做到这一点,例如,您可以先检查列表的长度…,但这是非常可读的。

我发现这非常符合python:

different = len(set(a).difference(set(b)))
更新


如果排序方式不同,则它们不相等或相同。按清单排列事项;你真的试过吗?@jonrsharpe是的,我试过了,但没用。你真正的问题是什么?输入是什么?预期的产量是多少?以上这些对我也适用,它打印出的顺序是错误的。@Armageddon 80它对我适用,我看到的顺序是错误的。请给出一个实际代表您的问题的答案。如果您知道列表包含相同/相等的元素,那么简单的比较就可以了,如果它们比较不同的元素,它们的排序方式就不一样了。如果您在相同的假设下想要检查它是否以相同的顺序包含相同的元素,那么[idx for x in a]==[idx for x in b]就可以了。如果您不想首先验证它们是否包含相同/相等的元素,那么这是另一个问题。如果列表包含重复的元素,这将不起作用。是的,您是对的,但您甚至可以额外检查列表长度以避免此问题。我更新了答案更新没有帮助。[1,1,2]和[1,2,2,]之间的集差将为null,它们的长度相同,但仍然不同。此外,它没有区分排序不同的[1,2,3]和[3,2,1],这就是问题所在。不解决所要求的问题,也不解决您试图解决的问题,这不是很像Python。如果列表a的值比列表b多,它会打印出“相同的列表,不同的顺序”,这是不正确的,因为列表不相同。@r0xette您是对的,它应该是==而不是!=在elif语句中–我在答案中修复了它。
 different = len(set(a).difference(set(b))) or (len(a) != len(b))