繁体   English   中英

比较不同大小的列表时会发生什么?

[英]What happens when you compare lists of different sizes?

在Python中,我有两个大小不同的列表:

x = [[0,5,10],[0,10,5]]
y = [100,500,900]

运行时,每个步骤的比较结果是什么:

print x>y

例如,它如何比较说第一个元素:[0,5,10]与100?

在Python 3中,您无法比较这两个列表,因为它们的元素不是可比较的类型。

在Python 2,列表总是不是整数,周期长,所以你的x总是比你的更大的y无论是在什么样的元素x的子列表。

真正的问题是如何比较[0,5,10]100 ,即列表与整数。

答案取决于Python版本。 在Python 3.x中,无法比较这两种类型。 在Python 2.x中,列表总是大于整数,因为类型名称list大于int

在您的示例中, print语句位于

print x>y

建议您使用的是Python 2.x,因此答案是x > yTrue

这些比较不起作用。 listint无法比较。 所以这行不通

只是为了扩展其他答案,该文档的内容还不错。 2.7文档中

可以将序列对象与具有相同序列类型的其他对象进行比较。 比较使用字典顺序:首先比较前两个项目,如果它们不同,则确定比较的结果; 如果它们相等,则比较下两个项目,依此类推,直到用尽任何一个序列。 如果要比较的两个项目本身是相同类型的序列,则按字典顺序进行递归比较。 如果两个序列的所有项目比较相等,则认为序列相等。

3.5文档

可以将序列对象与具有相同序列类型的其他对象进行比较。 比较使用字典顺序:首先比较前两个项目,如果它们不同,则确定比较的结果; 如果它们相等,则比较下两个项目,依此类推,直到用尽任何一个序列。 如果要比较的两个项目本身是相同类型的序列,则按字典顺序进行递归比较。 如果两个序列的所有项目比较相等,则认为序列相等。 如果一个序列是另一个序列的初始子序列,则较短的序列是较小的(较小的)序列。

本质上, x == y对对象使用魔术__eq__方法进行比较。 不同的对象的行为会有所不同,您甚至可以定义自己的自定义相等性,但是通常比较不同类型的对象总会得出 FalsePython2Python3文档)。

因此,在您的示例中, [0,5,10] == 100计算结果为False ,不是因为它检查列表中的元素是否等于100 ,而是因为这两种类型不兼容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM