当前位置: 首页 > 面试题库 >

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

何和惬
2023-03-14
问题内容

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

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实际在做什么?看来它返回的结果偏向于第一个列表,其中最左边的元素大于相应的元素?


问题答案:

从比较序列和其它类型在Python教程:

比较使用字典顺序:首先比较前两个项目,如果它们不同,则确定比较的结果;如果它们相等,则比较下两个项目,依此类推,直到用尽任何一个序列。

另请参阅Wikipedia有关词典顺序的文章。



 类似资料:
  • 我有一个检查两个变量引用的代码,我遇到了这个有点混乱的情况: 结果是: 我的第一个问题是为什么第一个和第三个引用相等?如果第三个变量等于第二个变量,它应该是,因为它们的对象引用不相等。 当我将值更改为时,我感到困惑,如下所示: 然后结果变成: 为什么会这样?

  • 虽然JavaScript的类型严格比较运算符(,)很好,但它没有相应的大于/小于的严格比较。 为什么不呢?我问这个问题完全是希望答案是“嗯,因为它没有”,但我还是在问,以防遗漏这些运营商有一个有趣和/或令人沮丧的历史原因。

  • 问题内容: 我需要使用位运算符比较两个整数。我遇到了一个问题,我必须不使用比较运算符就比较两个整数。使用位运算符会有所帮助。 假设a = 4;b = 5; 我们必须证明a不等于b。但是,我想进一步扩展它,例如,我们将显示哪个更大。这里b更大。 问题答案: 您至少需要将其与0进行比较,并且在概念上这是CPU所做的比较。例如 可以建模为等于,因为位必须相同才能返回0 如果这是你可以删除的,因为这可以暗

  • 问题内容: 我正在使用JSLint来遍历JavaScript,并且在执行诸如在语句内部进行比较之类的操作时,它返回许多建议以(三个等号)替换==(两个等号)。 有没有性能优势,以代替用? 由于存在许多比较运算符,因此任何性能改进都将受到欢迎。 如果没有进行类型转换,性能会超过==? 问题答案: 身份()运算符的行为与相等()运算符相同,但不进行任何类型转换,并且类型必须相同才能被视为相等。 进行任

  • 问题内容: 在Swift 3中,如果我使用或,这是一个编译错误 编译错误: 可选类型’Int?’的值 没有包装; 你是说用’!’ 要么 ‘?’? 但如果我与或比较 问题答案: 对于相等运算符来说,支持可选值是很有意义的,因为对于任何整数值变量,这是绝对清楚的: 当且仅当它们的值相同时 另一方面,尚不清楚与的比较应如何起作用: 是小于? 如果我想对数组进行排序以使所有s都在末尾出现,那么我希望小于。

  • 我用一个字段构造了一个类。然后创建了两个对象,并且必须使用运算符和对它们进行比较。以下是我所做的: