Pythonのcmp()関数とは?使い方・戻り値・リスト比較の方法を解説
cmp()関数とは
cmp(x, y)関数は、2つの引数xとyの値を比較するための組み込み関数です。
cmp(x, y)
戻り値は以下のとおりです。
- xがyより小さい場合:負の数
- xがyと等しい場合:0(ゼロ)
- xがyより大きい場合:正の数
組み込みのcmp()関数は、通常-1、0、1のいずれかの値のみを返します。ただし、同じ呼び出し形式を持つ関数が期待される場面では、それ以外の値が返されることもあります。そのため、結果については符号だけを見るのが最も安全です。
>>> cmp(2,8)
-1
>>> cmp(6,6)
0
>>> cmp(4,1)
1
>>> cmp('stackexchange', 'stackoverflow')
-1リスト同士の比較
cmp()メソッドは、2つのリストの要素を比較することもできます。
構文
cmp(list1, list2)
比較は以下のルールに従って行われます。
- 要素が同じ型であれば、そのまま比較を行い結果を返します。
- 要素が異なる型の場合、まず両方が数値かどうかを確認します。
- 数値であれば、必要に応じて数値変換(型の統一)を行ってから比較します。
- どちらか一方が数値である場合、数値の方が「小さい」とみなされます(数値は常に最小として扱われます)。
- 上記以外の場合は、型名をアルファベット順に並べた順序で比較されます。
- 片方のリストの末尾に達した場合は、長い方のリストが「大きい」とみなされます。両方のリストを使い切って内容も同じであれば引き分けとなり、0が返されます。
使用例
次の例は、cmp()メソッドの実際の使用方法を示しています。
list1, list2 = [456, 'xyz'], [789, 'abc'] print cmp(list1, list2) print cmp(list2, list1) list3 = list2 + [896]; print cmp(list2, list3)
実行結果
上記のプログラムを実行すると、次のような結果が出力されます。
-1 1 -1
補足:Python 3では利用できない点に注意
cmp()関数はPython 2までの組み込み関数であり、Python 3では削除されています。Python 3環境で同等の比較処理を行いたい場合は、比較演算子(<、>、==など)や、functoolsモジュールのcmp_to_key()、operatorモジュールなどを活用してください。レガシーコードの保守や移行の際には、この仕様変更に留意することが重要です。
-
Pythonのraw_input()関数とは?役割とinput()との違いをわかりやすく解説
raw_input()関数の基本的な動作Python 2におけるraw_input()関数は、ユーザーに対してプロンプト(入力を促すメッセージ)を表示し、キーボードから入力されたデータを受け取り、その内容を文字列(str型)として返す関数です。引数は省略可能で、raw_input([arg])のように文字列を渡すと、それがそのままプロンプトとして画面に表示されます。以下は典型的な使用例です。name = raw_input(What is your name? ) print Hello, %s. % nameこのコードを実行すると、まず「What is your name? 」というプロンプ
-
Pythonのreload()関数とは?モジュールを再読み込みする方法を解説
Pythonのreload()関数とはPythonのreload(moduleName)関数は、すでに読み込まれているモジュールを再読み込み(リロード)するための機能です。モジュールを読み込む際は、通常どおり import moduleName の構文でインポートしておく必要があります。この関数は、対話型セッションでの利用を想定して設計されています。たとえば、モジュールのソースファイルを編集した後、Pythonインタプリタを終了して再起動することなく、変更内容をすぐにテストしたい場合に便利です。reload()の基本的な使い方以下は、モジュールを編集した後に再読み込みする基本的な例です。>