Python不等式运算符;比较清单

时间:2015-06-21 11:47:14

标签: 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] < [9, 5]     
True                    # Huh?

所以,显然Python不只是通过并行索引。我确实找到了一些信息,说在这种情况下,Python按字典顺序排列列表,我猜这是按字母顺序排列的。

所以,我认为列表可能会被排序,然后通过并行进行比较,但是下面的例子证明了这一点:

>>> [1, 2, 3] < [3, 2, 1]
True

我的猜测是内部比较是[1,2,3]&lt; [1,2,3],它应该返回False,因为1&lt; 1是假,2 < 2是假的等等。

感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

Python的作用是,并行查看列表并比较同一索引的元素。第一次遇到不相等的元素时,它会返回此结果。

与比较单词相同:

"Peter" > "Peer"

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

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

答案 1 :(得分:3)

  很明显,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

答案 2 :(得分:1)

这实际上很有意义。

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

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

显然,“86”出现在“95”之前,正如“az”出现在“bc”之前,“100”出现在“90”之前。

更多here