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