我注意到最近有一段代码直接比较两个整数列表,如下所示:
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都在末尾出现,那么我希望小于。
我用一个字段构造了一个类。然后创建了两个对象,并且必须使用运算符和对它们进行比较。以下是我所做的: