cmp() 方法用于比较两个列表的元素。
cmp()方法语法:
1
|
cmp (list1, list2)
|
参数:
list1 -- 比较的列表。list2 -- 比较的列表。
返回值:
如果比较的元素是同类型的,则比较其值,返回结果。
如果两个元素不是同一种类型,则检查它们是否是数字。
如果是数字,执行必要的数字强制类型转换,然后比较。如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")否则,通过类型名字的字母顺序进行比较。
如果有一个列表首先到达末尾,则另一个长一点的列表"大"。
如果我们用尽了两个列表的元素而且所 有元素都是相等的,那么结果就是个平局,就是说返回一个 0。
以下实例展示了 cmp()函数的使用方法:
1
2
3
4
5
6
7
8
9
10
11
|
#!/usr/bin/python
list1, list2 = [ 123 , 'xyz' ], [ 456 , 'abc' ]
print cmp (list1, list2);
print cmp (list2, list1);
list3 = list2 + [ 786 ];
print cmp (list2, list3)
|
Python3不在支持cmp方法:
可用方法有:
表达式减(-)法:
1
|
print ((a>b) - (a<b)) #0,表示俩list相等
|
operator模块比较运算:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import operator
a = [ 1 , 2 , 3 , 4 , 5 ]
b = [ 1 , 2 , 3 , 4 , 5 , 6 ]
c = [ 1 , 2 , 3 , 4 , 5 ]
print (operator.lt(a,b)) #=> True ,小于<
print (operator.gt(a,b)) #=> False ,大于>
print (operator.eq(a,c)) #=> True ,等于==
print (operator.ne(b,a)) #=> True ,不等于!=
print (operator.le(a,b)) #=> True ,小于等于<=
print (operator.ge(b,a)) #=> True ,大于等于>=
|
扩展学习:
两个列表,随机产生4个不相等的数,计算一下,相同位置上的元素相等的个数,用k1表示。
b列表中的元素在a列表中,但位置不相同,有多少个,用k2表示。
例如:
a=[0, 4, 7, 3]
b=[7, 1, 0, 3]
k1= 1 (只有第4个元素相等,k1=1)
k2= 2(两个列表中都有0和7,但位置不同,k2=2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
a = []
b = []
while ( len (a)! = 4 ):
x = randint( 0 , 9 )
if x not in a:
a.append(x)
while ( len (b)! = 4 ):
x = randint( 0 , 9 )
if x not in b:
b.append(x)
print (a)
print (b)
print ()
k1 = k2 = 0
for i in range ( 4 ):
if a[i] = = b[i]:
k1 + = 1
if b[i] in a and b[i]! = a[i]:
k2 + = 1
print ( 'k1=' ,k1)
print ( 'k2=' ,k2)
|