猿问

使用大于或小于运算符比较两个列表

我注意到最近有一段代码直接比较两个整数列表,如下所示:


a = [10,3,5, ...]

b = [5,4,3, ...,]

if a > b:

     ...

这似乎有些奇怪,但我想True如果所有list_a元素都大于,则返回;list_b如果每个元素相等或list_b元素大于,则返回False list_a。所以我测试了它:


>>> a=[3,3,3,3]

>>> b=[4,4,4,4]

>>> a>b

False

>>> b>a

True

好的,行得通。和:


>>> b = [1,1,1,1]

>>> a = [1,1,1,1]

>>> a>b

False

>>> b>a

False

但是当它变得更加模糊时:


>>> a=[1,1,3,1]

>>> b=[1,3,1,1]

>>> a>b

False

>>> b>a

True

要么:


>>> a=[1,3,1,1]

>>> b=[1,1,3,3]

>>> a>b

True

>>> b>a

False

结果有点陌生。python实际在做什么?看来它返回的结果偏向于第一个列表,其中最左边的元素大于相应的元素?


喵喔喔
浏览 730回答 2
2回答

白板的微信

从比较序列和其它类型在Python教程:比较使用字典顺序:首先比较前两个项目,如果它们不同,则确定比较的结果;如果它们相等,则比较下两个项目,依此类推,直到用尽任何一个序列。另请参阅Wikipedia有关词典顺序的文章。

汪汪一只猫

由于我首先没有发现使用“词典顺序”对列表/元组比较的解释,因此首先尝试用“我自己的话”对其进行解释。首先,这是下面的说明中引用的一些示例列表: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']依次比较每个索引处的项目对。因此,比较a于b将导致1被比较1,2被比较2和3被比较10。当对比较将停止或者不相等的一对物品的被发现或 --IF列表具有不同的长度-在达到短列表的末尾。例如,当比较a和b,比较会当停止3,并10进行比较。比较b和时c,比较将在10和停止3。一旦发现不相等的对,总体结果就是比较不相等项的结果。无论列表的长度是否相等,这都适用-例如,列表b大于列表,c因为100in c永远不会起作用。例如,在比较时a要b,总的结果将是比较结果3来10。a < b -> True因为3小于10。a > b -> False因为3不大于10。a == b -> False因为3不相等10。如果一个列表较短,并且它的N个项目等于较长列表的前N个项目(如a和)c,则较短的列表将被视为小于较长的列表(因此a小于c)。两个列表只有在长度相同且所有项目对都相等时才比较相等。关于类型的注意事项:如果一对中的项目不可比,则比较将失败,并且TypeError像往常一样。例如,比较列表a到f时将无法1进行比较'a'。但也要注意,由于in 从未与in中的任何内容进行比较d,因此e可以进行比较。'a'ed
随时随地看视频慕课网APP

相关分类

Python
我要回答