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

时间:2016-05-26 18:13:35

标签: python list comparison

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

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

我跑步时每一步的比较是什么:

print x>y

e.g。如何比较说第一个元素:[0,5,10]与100?

5 个答案:

答案 0 :(得分:4)

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

在Python 2中,列表总是大于整数,句点,因此x总是大于y,无论x的子列表中包含哪些元素。

答案 1 :(得分:1)

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

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

在您的示例中,

中的print语句
print x>y

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

答案 2 :(得分:0)

这些比较不起作用。无法比较listint。所以它不会起作用

答案 3 :(得分:0)

为了扩展其他答案,文档在这方面非常好。来自the 2.7 documentation

  

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

来自the 3.5 documentation

  

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

答案 4 :(得分:0)

基本上x == y在对象上使用魔术__eq__方法来比较它们。不同的对象的行为会有所不同,您甚至可以定义自己的自定义等式,但通常比较不同类型的对象将始终评估为FalsePython2Python3 docs。

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