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」と同じです。
コメント