Python 列表 cmp() 方法



Python 列表的cmp()方法比较两个列表的元素。这些列表可以包含相同或不同数据类型的元素。如果元素类型相同,则此方法按字典顺序比较它们并返回结果;但如果元素类型不同,则检查比较的不同情况。如下所示 -

  • 如果元素是数字,则根据需要执行数值强制转换并进行比较。
  • 如果任一元素是数字,则另一个元素被认为“更大”(数字“最小”)。
  • 否则,类型按名称按字母顺序排序。
  • 如果我们在到达一个列表的末尾之前到达了另一个列表的末尾,则较长的列表“更大”。

注意:此方法仅在 Python 2.x 中可执行,在 Python 3.x 中不起作用。

语法

以下是 Python 列表cmp()方法的语法 -

cmp(list1, list2)

参数

  • list1 - 这是要比较的第一个列表。

  • list2 - 这是要比较的第二个列表。

返回值

如果第一个列表大于第二个列表,则该方法返回 1,如果小于则返回 -1;当两个列表相等时返回 0。

示例

以下示例显示了 Python 列表 cmp() 方法的使用。此程序仅在 Python 2.x 版本中执行。

list1, list2 = [123, 'xyz'], [456, 'abc']
print cmp(list1, list2)
print cmp(list2, list1)
list3 = list2 + [786];
print cmp(list2, list3)

当我们运行上述程序时,它会产生以下结果 -

-1
1
-1

示例

如果用户希望在 Python 3.x 解释器中执行此方法,他们可以像给定示例中所示的那样声明一个用户自定义函数。此方法的工作原理类似于内置的 cmp() 方法。

def cmp(x, y):
   return (x > y) - (x < y)
#x > y
x = 5
y = 3
print("The cmp value for x>y is : ",cmp(x, y),"\n")
#x<y
x = 7
y = 9
print("The cmp value for x<y is : ",cmp(x, y),"\n")
#x=y
x = 13
y = 13
print("The cmp value for x=y is : ",cmp(x, y))
#odd and even
k = 16
if cmp(0, k % 2):
   print("\n","The given number",k,"is odd number ")
else:
   print("\n","The given number",k,"is even number")
k= 31
if cmp(0, k % 2):
   print("\n","The given number",k,"is odd number")
else:
   print("\n","The given number",k,"is even number")

运行上述代码将得到以下结果:

The cmp value for x>y is : 1

The cmp value for x<y is : -1

The cmp value for x=y is : 0

The given number 16 is even number

The given number 31 is odd number
python_lists.htm
广告

© . All rights reserved.