Python不等式算子;比较列表

Python不等式算子;比较列表,python,inequalities,Python,Inequalities,在使用不等式运算符比较列表时难以理解Python行为。下面是一个使用python3命令行解释器的代码片段: >>> [8] < [7] False >>> [8] < [9] True >>> [8, 6] < [9] True >>> [8, 6] < [9, 7] True # So far so good >>> [8, 6] &

在使用不等式运算符比较列表时难以理解Python行为。下面是一个使用python3命令行解释器的代码片段:

>>> [8] < [7]
False
>>> [8] < [9]
True
>>> [8, 6] < [9]
True
>>> [8, 6] < [9, 7]     
True                    # So far so good
>>> [8, 6] < [9, 5]     
True                    # Huh?
>[8]<[7]
假的
>>> [8] < [9]
真的
>>> [8, 6] < [9]
真的
>>> [8, 6] < [9, 7]     
是的,到目前为止还不错
>>> [8, 6] < [9, 5]     
是吗?
因此,显然Python不仅仅是在并行索引中移动。我确实发现一些信息表明,在这个场景中,Python按“字典顺序”排列列表,我猜这意味着按字母顺序排列

因此,我认为可能会对列表进行排序,然后进行并行比较,但下面的示例证明了这一点:

>>> [1, 2, 3] < [3, 2, 1]
True
>>[1,2,3]<[3,2,1]
真的
我猜内部比较应该是[1,2,3]<[1,2,3],它应该返回False,因为1<1是False,2<2是False,等等

感谢您的帮助

显然,Python不仅仅是在并行索引中移动

是的,它会在第一次发现不相等的值时停止。这确实是词典编纂的顺序。用字母替换示例中的数字,用字符串替换列表:

"h" < "g" # False
"h" < "i" # True
"hf" < "i" # True
"hf" < "ig" # True
"hf" < "ie" # True - not huh, hf does come before ie alphabetically.
"abc" < "cba" # True
“h”<“g”#错误
“h”<“i”#正确
“hf”<“i”#正确
“hf”<“ig”#正确
“hf”<“ie”#对-不是啊,hf确实按字母顺序排在ie之前。
“abc”<“cba”#正确

这其实很有道理

比较的方式类似于按词典顺序对单词进行排序。毕竟,单词也是列表:字符列表

你首先考虑第一个项目。如果一个较小,则整个序列较小;如果它们相等,则移动到第二项,以此类推

很明显,“86”在“95”之前,正如“az”在“bc”之前,“100”在“90”之前一样


更多。

Python所做的是,并行地浏览列表并比较同一索引的元素。当它第一次遇到不相等的元素时,它将返回此结果

这和比较单词是一样的:

"Peter" > "Peer"
前两个字母相同,第三个字母不同,并给出结果。这与纸质词典中使用的(列表)技术相同,只是使用列表元素而不是字符

其他信息:
(正如Padraic Cunningham所建议的):当一个列表较短,且所有元素都达到较短列表的大小(相同),则认为较长的列表较大。这也与普通(纸质)词典相同。

按字母顺序排列的列表“86”