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)
コメント