【Python】タプルとリストを相互に変換する方法を解説

この記事では、Pythonにおけるタプルとリストの相互変換方法について解説します。

タプルをリストに変換する方法とリストをタプルに変換する方法を具体的なコード例とともに紹介します。

目次から探す

タプルをリストに変換する方法

タプルとリストは、Pythonのデータ構造の中でもよく使われるものです。

タプルは変更不可(イミュータブル)なデータ構造であり、リストは変更可能(ミュータブル)なデータ構造です。

タプルをリストに変換する方法について解説します。

list()関数を使った変換方法

タプルをリストに変換する一番簡単な方法は、組み込み関数のlist()を使う方法です。

list()関数は引数にイテラブルなオブジェクトを受け取り、その要素をリストとして返します。

tuple_data = (1, 2, 3, 4, 5)
list_data = list(tuple_data)
print(list_data)

上記のコードでは、tuple_dataというタプルをlist()関数に渡しています。

list()関数はタプルの要素をリストとして返し、それをlist_dataに代入しています。

最後にprint()関数を使ってlist_dataを出力しています。

実行結果は以下のようになります。

[1, 2, 3, 4, 5]

リスト内包表記を使った変換方法

リスト内包表記を使って、タプルをリストに変換することもできます。

リスト内包表記は、簡潔な書き方でリストを生成するための方法です。

tuple_data = (1, 2, 3, 4, 5)
list_data = [x for x in tuple_data]
print(list_data)

上記のコードでは、tuple_dataというタプルをリスト内包表記で処理しています。

xという変数にタプルの要素が順番に代入され、それをリストとして生成しています。

最後にprint()関数を使ってlist_dataを出力しています。

実行結果は先ほどと同じく、以下のようになります。

[1, 2, 3, 4, 5]

map()関数を使った変換方法

map()関数を使っても、タプルをリストに変換することができます。

map()関数は、第一引数に関数、第二引数にイテラブルなオブジェクトを受け取り、その要素に対して関数を適用した結果を返します。

tuple_data = (1, 2, 3, 4, 5)
list_data = list(map(lambda x: x, tuple_data))
print(list_data)

上記のコードでは、tuple_dataというタプルをmap()関数で処理しています。

lambdaを使って無名関数を定義し、それをmap()関数の第一引数に渡しています。

map()関数はタプルの要素に対して無名関数を適用し、その結果をリストとして返します。

最後にlist()関数を使ってリストに変換し、print()関数で出力しています。

実行結果は先ほどと同じく、以下のようになります。

[1, 2, 3, 4, 5]

以上がタプルをリストに変換する方法です。

次に、リストをタプルに変換する方法について解説します。

リストをタプルに変換する方法

Pythonでは、リストをタプルに変換する方法がいくつかあります。

ここでは、主な方法を紹介します。

tuple()関数を使った変換方法

リストをタプルに変換する一番簡単な方法は、組み込み関数のtuple()を使う方法です。

tuple()関数は、引数として渡されたイテラブルオブジェクト(リストやタプルなど)をタプルに変換して返します。

my_list = [1, 2, 3, 4, 5]
my_tuple = tuple(my_list)
print(my_tuple)
(1, 2, 3, 4, 5)

上記の例では、my_listというリストをtuple()関数に渡しています。

tuple()関数は、リストをタプルに変換し、my_tupleという変数に代入しています。

そして、print()関数を使ってmy_tupleを出力しています。

タプル内包表記を使った変換方法

リスト内包表記と同様に、タプル内包表記を使ってリストをタプルに変換することもできます。

タプル内包表記は、リスト内包表記と同じ構文を使いますが、結果がタプルとなる点が異なります。

my_list = [1, 2, 3, 4, 5]
my_tuple = tuple(item for item in my_list)
print(my_tuple)
(1, 2, 3, 4, 5)

上記の例では、my_listというリストをタプル内包表記で変換しています。

item for item in my_listという部分は、リスト内包表記と同じ構文ですが、結果がタプルとなる点が異なります。

my_tupleという変数に代入して、print()関数を使ってmy_tupleを出力しています。

map()関数を使った変換方法

map()関数を使ってリストをタプルに変換することもできます。

map()関数は、第一引数に関数、第二引数にイテラブルオブジェクトを受け取り、イテラブルオブジェクトの要素に対して関数を適用した結果を返します。

この場合、tuple()関数を使ってリストの要素をタプルに変換する関数を指定します。

my_list = [1, 2, 3, 4, 5]
my_tuple = tuple(map(lambda x: x, my_list))
print(my_tuple)
(1, 2, 3, 4, 5)

上記の例では、my_listというリストをmap()関数で変換しています。

lambda x: xという無名関数を使って、リストの要素をそのまま返すようにしています。

my_tupleという変数に代入して、print()関数を使ってmy_tupleを出力しています。

これらの方法を使って、リストをタプルに変換することができます。

タプルは変更不可能なオブジェクトであるため、リストとタプルの違いに注意してください。

また、変換時に要素の順序が保持されることも確認してください。

タプルとリストの相互変換の注意点

タプルとリストは、Pythonにおいてデータを格納するためのコンテナ型です。

しかし、タプルとリストにはいくつかの重要な違いがあります。

可変性の違いに注意する

タプルはイミュータブル(変更不可)なオブジェクトであり、一度作成されたタプルの要素は変更することができません。

一方、リストはミュータブル(変更可能)なオブジェクトであり、要素の追加や削除、変更が可能です。

このため、タプルからリストへの変換を行う場合、タプルの要素を変更することができるようになります。

逆に、リストからタプルへの変換を行う場合、リストの要素を変更することはできません。

変換時のパフォーマンスに注意する

タプルとリストの相互変換は、要素の数が多い場合にはパフォーマンスの問題が発生することがあります。

特に、リストからタプルへの変換は、リストの要素をコピーする必要があるため、処理時間が増える可能性があります。

そのため、変換を行う際には、処理時間が重要な場合には注意が必要です。

もし、変換後に要素の変更が必要ない場合は、タプルからリストへの変換を行わずに、タプルのまま処理を行うことがパフォーマンスの向上につながります。

以上が、タプルとリストの相互変換における注意点です。

これらのポイントを押さえて、適切に変換を行うことで、Pythonプログラムの効率的な実装が可能となります。

目次から探す