Pythonでcmp()関数の代替コードで、 2つのリストの要素(文字列を含む)を比較する

スポンサーリンク

Pythonでcmp()関数の代替コードで、 2つのリストの要素(文字列を含む)を比較してみます。なお、代替コードを使用するのは、cmp() 関数は Python 3 で削除されていることが判明したからです。

この記事は、「Pythonでcmp()関数を用いて 2つのリストの要素(整数のみ)を比較する」の続きとなります。

■Python

Google Colaboratory(Google Colab),2022年11月19日現在、Python 3.7.15を使用している。

■cmp()関数の代替コードで、 2つのリストの要素(文字列を含む)を比較する

では、cmp()関数の代替コードで、 2つのリストの要素(文字列を含む)を比較してみます。

■コード

def cmp(x, y):
    return (x > y) - (x < y)

list1 = [ 1, 2, 5, 7]
list2 = [ 1, 2, 5, 'a']

print(cmp(list2,list1))

まずは、list1というリストを角括弧”[ ]”を用い、さらに角括弧内に要素(整数)をカンマ”,”を用いて格納し定義します。定義後、同じようにして、list2というリストを角括弧”[ ]”とカンマ”,”を用いて定義します。定義したlist2には文字列を含ませます。

この2つのリストを比較するために、Python3でも使用できる代替コードが公開されていたので、これを使用します。

■実行・検証

では、再びセルを保存し、実行してみます。

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in 
      5 list2 = [ 1, 2, 5, 'a']
      6 
----> 7 print(cmp(list1,list2))

 in cmp(x, y)
      1 def cmp(x, y):
----> 2     return (x > y) - (x < y) 3 4 list1 = [ 1, 2, 5, 7] 5 list2 = [ 1, 2, 5, 'a'] TypeError: '>' not supported between instances of 'int' and 'str'

実行してみると、「TypeError」というエラーが発生しました。エラー内容を確認してみると「’>’ not supported between instances of ‘int’ and ‘str’(int’ と ‘str’ のインスタンス間で ‘>’ はサポートされません。)」というもので、’int(整数型の変数)’ と ‘str(文字列型の変数)’ のインスタンス間で比較演算子である’>’はサポートされていないため、エラーが発生していました。

このエラーを解決できないか調べたところ、2022年11月現在、見つかっていない。参考:(https://stackoverflow.com/questions/65235441/python-cmp-function

コメント

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