Pythonの関数から複数の値を返す4つの方法【タプル・リスト・辞書・クラス】
はじめに
Pythonでは、関数から複数の値をまとめて返すことが標準機能として簡単に行えます。具体的には、タプル、リスト、辞書(dict)、そしてユーザー定義クラスのオブジェクトという4つの形式が利用できます。
それぞれの方法を、実際のコード例とともに順番に見ていきましょう。
方法1:タプルとして返す(最も一般的)
Pythonで最もよく使われるのがこの方法です。return a, bのようにカンマで区切って値を並べると、自動的にタプルとしてまとめて返されます。受け取る側ではアンパックを使って、個別の変数へ直接代入することも可能です。
>>> def function():
a = 10; b = 20
return a, b
>>> x = function()
>>> type(x)
<class 'tuple'>
>>> x
(10, 20)
>>> x, y = function()
>>> x, y
(10, 20)
x, y = function()と書くことで、戻り値のタプルが自動的に展開され、各値を別々の変数で受け取れます。
方法2:リストとして返す
要素の追加や変更を行いたい場合は、リストとして返すのが便利です。角括弧[ ]で値を囲んでreturnするだけです。
>>> def function():
a = 10; b = 20
return [a, b]
>>> x = function()
>>> x
[10, 20]
>>> type(x)
<class 'list'>
方法3:辞書(dict)として返す
各値に名前(キー)を持たせたい場合には、辞書を使うとよいでしょう。キーを指定してアクセスできるため、どの値が何を意味しているのかが明確になります。
>>> def function():
d = dict()
a = 10; b = 20
d['a'] = a; d['b'] = b
return d
>>> x = function()
>>> x
{'a': 10, 'b': 20}
>>> type(x)
<class 'dict'>
受け取り側ではx['a']のようにキーを指定して値を取得します。
方法4:ユーザー定義クラスのオブジェクトとして返す
関連する複数の値をひとつのまとまりとして扱い、属性名でアクセスしたい場合には、独自のクラスを定義してそのインスタンスを返すのが有効です。
>>> class tmp:
def __init__(self, a, b):
self.a = a
self.b = b
>>> def function():
a = 10; b = 20
t = tmp(a, b)
return t
>>> x = function()
>>> type(x)
<class '__main__.tmp'>
>>> x.a
10
>>> x.b
20
ドット記法(x.a、x.b)で直感的に値へアクセスできるため、可読性の高いコードになります。より簡潔に書きたい場合は、標準ライブラリのdataclassesやnamedtupleを使うのもおすすめです。
まとめ:使い分けのポイント
- タプル:シンプルに複数の値を返したいときの定番。アンパックと相性が良い。
- リスト:後から要素を追加・変更したい場合に便利。
- 辞書:各値に意味のある名前をつけて返したい場合に最適。
- クラスのオブジェクト:関連するデータと処理をひとまとめにし、属性名でアクセスしたい場合に有効。
用途に応じてこれらの方法を使い分けることで、Pythonの関数は柔軟かつ読みやすい設計になります。
-
【Python入門】Matplotlibで複数のグラフを1つの図に組み合わせる方法(subplot・twinx活用)
はじめに Matplotlibは、同じグラフ上に複数のプロットを重ねて描画できる強力なPythonの可視化ライブラリです。本チュートリアルでは、2つの異なるY軸を使いながら、1つの図の中に複数のデータを組み合わせて表示する方法を、実際に動くコード例とともにわかりやすく解説します。 事前準備:Matplotlibのインストール まず、Pythonのコマンドプロンプト(ターミナル)を開き、以下のコマンドでmatplotlibをインストールしてください。 pip install matplotlib 手順1:表示するデータを準備する ここでは、iPhone・Galaxy・Pixelの3機種につい
-
ExcelのVLOOKUP関数で複数の値を返す8つの方法【関数・フィルター活用】
別のワークシートや同じシート内から値を取り出したいとき、真っ先に思い浮かぶのがExcelのVLOOKUP関数ではないでしょうか。しかし、VLOOKUP関数には大きな弱点があります。それは一度に返せる値が1つだけという点です。この関数を使って複数の値を検索・抽出するには、ひと工夫が必要になります。本記事では、その具体的な方法を順を追って解説します。 また、INDEX、SMALL、MATCH、ROW、COLUMNSなどの他のExcel関数を組み合わせれば、複数の値を柔軟に抽出できます。さらに、詳細フィルター(Advanced Filter)、オートフィルター、テーブルとして書式設定といったExce