pythonで2つのリストを比較する方法の例


cmp()メソッドは、2つのリストの要素を比較するために使用されます。
cmp()方法文法:

cmp(list1, list2)
パラメータ:
リストの比較。list 2--比較のリスト。
戻り値:
比較した要素が同じタイプの場合、その値を比較し、結果を返します。
二つの要素が同じタイプでない場合、それらが数字かどうかを確認します。
数字であれば、必要なデジタル強制変換を実行し、比較します。一方の要素が数字である場合、もう一方の要素は「大」(数字は「最小」)でなければ、タイプ名のアルファベット順で比較します。
リストがある場合は、まず末尾に到達します。もう一つの長いリストは「大」です。
二つのリストの要素を使い果たし、すべての要素が等しくなったら、結果は引き分けとなります。つまり、0を返します。
以下の例は、cmp()関数の使用方法を示している。

#!/usr/bin/python

list1, list2 = [123, 'xyz'], [456, 'abc']

print cmp(list1, list2);

print cmp(list2, list1);

list3 = list2 + [786];

print cmp(list2, list3)
Python 3はcmpの方法をサポートしていません。
利用可能な方法はありますか
式マイナス(-)法:

print((a>b)-(a<b)) #0,   list  
operatorモジュール比較演算:

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つの不等数を生成し、計算してみます。同じ位置の要素が等しい個数は、k 1で表します。
bリストの要素はaリストにありますが、位置が異なり、いくつかあります。k 2で表します。
たとえば:
a=[0,4,7,3]
b=[7,1,0,3]
k 1=1(4番目の元素だけが等しい、k 1=1)
k 2=2(両方のリストに0と7がありますが、位置が違います。k 2=2)

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)