Pythonでcmp()関数を用いて 2つのリストの要素(整数のみ)を比較する

スポンサーリンク

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」と同じです。

コメント

タイトルとURLをコピーしました