Comparing two lists using the greater than or less than operator
我注意到最近有一段代码直接比较了两个整数列表,如下所示:
1 2 3 4 | a = [10,3,5, ...] b = [5,4,3, ...,] if a > b: ... |
这似乎有点奇怪,但我想如果所有
1 2 3 4 5 6 | >>> a=[3,3,3,3] >>> b=[4,4,4,4] >>> a>b False >>> b>a True |
好的。同样:
1 2 3 4 5 6 | >>> b = [1,1,1,1] >>> a = [1,1,1,1] >>> a>b False >>> b>a False |
但当它变得更模糊时:
1 2 3 4 5 6 | >>> a=[1,1,3,1] >>> b=[1,3,1,1] >>> a>b False >>> b>a True |
或:
1 2 3 4 5 6 | >>> a=[1,3,1,1] >>> b=[1,1,3,3] >>> a>b True >>> b>a False |
结果有点奇怪。Python到底在做什么?似乎它返回的结果是第一个列表,其中最左边的元素大于对应的元素?
通过比较python教程中的序列和其他类型:
The comparison uses lexicographical ordering: first the first two items are compared, and if they differ this determines the outcome of the comparison; if they are equal, the next two items are compared, and so on, until either sequence is exhausted.
另请参见维基百科有关词典编纂顺序的文章。
由于我一开始没有发现用"词典编纂顺序"来解释列表/元组比较,因此这里尝试用"我自己的话"来解释它。首先,下面的解释中引用了一些示例列表:
1 2 3 4 5 6 | a = [1, 2, 3] b = [1, 2, 10] c = [1, 2, 3, 100] d = [1, 2, 3] e = [1, 2, 3, 4, 'a'] f = ['a', 'b', 'c'] |
依次比较每个索引处的一对项。因此,将
当找到一对不相等的项或(如果列表的长度不同)到达较短列表的结尾时,将停止对的比较。
例如,当比较
一旦发现不相等项对,总的结果就是比较不相等项的结果。这适用于列表长度是否相同——例如,列表
例如,当比较
如果其中一个列表较短,其n个项目等于较长列表的前n个项目,如
只有当两个列表的长度相同且所有项对的比较结果相同时,两个列表才会进行相等的比较。
关于类型的注意事项:如果一对中的项目不可比较,则与通常的