Pythonでcmp()関数を用いて 2つのリストの要素を比較してみます。
Pythonのlistメソッドcmp()を用いることで、 2つのリストの要素を比較することができます。
■Python

Google Colaboratory(Google Colab),2022年11月19日現在、Python 3.7.15を使用している。
■cmp()関数を用いて2つのリストの要素(整数のみ)を比較する
では、早速cmp()関数を用いて2つのリストの要素(整数のみ)を比較してみます。
■コード
list1 = [ 1, 2, 4, 3] list2 = [ 1, 2, 9, 10] print(cmp(list2, list1))
まずは、list1というリストを角括弧”[ ]”を用い、さらに角括弧内に要素(整数)をカンマ”,”を用いて格納し定義します。定義後、同じようにして、list2というリストを角括弧”[ ]”とカンマ”,”を用いて定義します。これで2つのリストが用意できましたので、cmp()を用います。括弧内には第1の引数,パラメータとして、list1を渡します。これは、比較する最初のリストになります。次に第2の引数,パラメータとして、list2を渡します。これは、比較する2番めのリストになります。これで2つのリストの要素(整数のみ)が比較され、比較された結果が返されます。返された結果をprint()を用いて出力します。
なお、この結果では最初のリストが2番めのリストよりも大きい場合となり、結果として「1」が返されます。
■実行・検証
では、このセルを保存し、実行してみます。

---------------------------------------------------------------------------
NameError Traceback (most recent call last)
in
2 list2 = [ 1, 2, 9, 10]
3
----> 4 print(cmp(list2, list1))
NameError: name 'cmp' is not defined実行してみると、「NameError」というエラーが発生し、エラー内容を確認すると「name ‘cmp’ is not defined」というもので、cmpは定義されていない。調べてみると、cmp() 関数は Python 3 で削除されていることが判明した。
削除されているため、Python3でも使用できる代替コードが公開されていたので、こちらを試す。
■セルを書き直す
■コード
def cmp(x, y):
return (x > y) - (x < y)
list1 = [ 1, 2, 4, 3]
list2 = [ 1, 2, 9, 10]
print(cmp(list2,list1))■再実行・検証
では、再びセルを保存し、実行してみます。

実行してみると、返された結果が「1」となった。これは、cmp()関数を用いて2つのリストの要素(整数のみ)を比較した場合に、引数,パラメータとして渡した最初のリストが2番めのリストよりも大きい場合の結果として出力される「1」と同じです。
■最初のリストが 2 番目のリストよりも小さい場合
出力を確認後、代替コードで、最初のリストが2番目のリストよりも小さい場合はどうなるのかやってみます。cmp()関数を用いると、この場合は「-1」を返します。
■コード
def cmp(x, y):
return (x > y) - (x < y)
list1 = [ 1, 2, 9, 10, 15]
list2 = [ 1, 2, 9, 10]
print(cmp(list2,list1))■実行・検証
では、このセルを保存し、実行してみます。

実行してみると、返された結果が「-1」となった。これは、cmp()関数を用いて2つのリストの要素(整数のみ)を比較した場合に、引数,パラメータとして渡した最初のリストが2番目のリストよりも小さい場合の結果として出力される「-1」と同じです。
■両方のリストが等しい場合
出力後、代替コードで両方のリストが等しい場合はどうなるのかやってみます。cmp()関数を用いると、この場合は「0」を返します。
■コード
def cmp(x, y):
return (x > y) - (x < y)
list1 = [ 1, 2, 9, 10]
list2 = [ 1, 2, 9, 10]
print(cmp(list2,list1))■実行・検証
では、このセルを保存し、実行してみます。

実行してみると、返された結果が「0」となった。これは、cmp()関数を用いて2つのリストの要素(整数のみ)を比較した場合に、引数,パラメータとして渡した最初のリストが2番目のリストと等しい場合の結果として出力される「0」と同じです。

コメント