2022年 11月 9日

关于python列表之间的大小比较

最近又把python抓起来学一下,还是看的b站上面小甲鱼的视频,刚看到列表之间的大小比较部分,有了疑惑,python列表之间是怎么比较大小的?百度了一下没看到有人说清楚,于是准备自己推一下:

list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 == list2)
#在pycharm里面结果为True
#同时list1 < list2 和 list1 > list2 都是False
  • 1
  • 2
  • 3
  • 4
  • 5

说明至少在pycharm里面两个列表元素相同,那列表大小就相同。

list1 = [1, 2 ,3]
list2 = [2, 2, 3]
print(list1 < list2)
#结果为True
#同样[1, 2, 3] < [1, 3, 3] [1, 2, 3] < [1, 2, 4]
  • 1
  • 2
  • 3
  • 4
  • 5

说明如果两列表从第0个位置的数开始比较,如果相同,则会一直向后比较直到遍历完整个列表。那么如果两个列表长度不一样呢?

list1 = [1, 2, 3]
list2 = [1, 2, 3, 4]
print(list1 < list2)
#结果为True
#同样[1, 2, 3] < [1, 2, 3, -1] 
  • 1
  • 2
  • 3
  • 4
  • 5

所以前面元素相同时,长度更长的那个列表大。
我们知道,列表里面的元素包罗万象,那么字符串类型的数字可不可以比较大小呢?

list1 = ['1', 2, 3]
list2 = [1, 2, 3]
print(list1 < list2)
#运行会报错 int 和 str类型不能直接比较
list1 = ['1', 2, 3]
list2 = ['2', 2, 3]
print(list1 < list2)
#结果为True
#同样['1', 2, 3] > ['-1', 2, 3]
list1 = ['1', 2, 3]
list2 = ['a', 2, 3]
print(list1 < list2)
#结果为True
#另外,list2中的'a'换成'汉字'甚至'[1, 2]'也是一样的,而如果换成'-a',结果就为False
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

如果是

list1 = ['a', 2, 3]
list2 = ['[1, 2]', 2, 3]
print(list1 < list2)
#结果为False,这是怎么比较的我就不清楚了
  • 1
  • 2
  • 3
  • 4

以上纯属闲的