Pythonでリストとタプルを相互に変換するlist(), tuple()

Pythonでリスト(配列)とタプルを相互に変換したいときは、list()とtuple()を使います。 list()とtuple()はそれぞれlist型とtuple型のコンストラクタ。 リストとタプルだけでなく集合set型などのイテラブルオブジェクトを引数に与えると、list型とtuple型の新たなオブジェクトを返します。

  1. 組み込み関数 list() — Python 3.6.3 ドキュメント
  2. 組み込み関数 tuple() — Python 3.6.3 ドキュメント

以下のリスト、タプル、range型の変数を例とします。

l = [0, 1, 2]
print(l)
print(type(l))
# [0, 1, 2]
# <class 'list'>

t = ('one', 'two', 'three')
print(t)
print(type(t))
# ('one', 'two', 'three')
# <class 'tuple'>

r = range(10)
print(r)
print(type(r))
# range(0, 10)
# <class 'range'>

range()がrange型オブジェクトを返すようになったのはPython3から。

なお、便宜上、変換という言葉を使っているが、実際は新たなオブジェクトが生成されており、元のオブジェクトはそのまま。

list()でリストを生成

list()の引数にタプルなどのイテラブルオブジェクトを指定すると、その要素を持つリストが生成されます。

tl = list(t)
print(tl)
print(type(tl))
# ['one', 'two', 'three']
# <class 'list'>

rl = list(r)
print(rl)
print(type(rl))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# <class 'list'>

tuple()でタプルを生成

tuple()の引数にリストなどのイテラブルオブジェクトを指定すると、その要素を持つタプルが生成されます。

lt = tuple(l)
print(lt)
print(type(lt))
# (0, 1, 2)
# <class 'tuple'>

rt = tuple(r)
print(rt)
print(type(rt))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
# <class 'tuple'>

タプルの要素の追加・変更

タプルはイミュータブル(更新不可)なので要素を変更したり削除したりすることはできないが、list()でリスト化して要素を変更・削除後、再度tuple()を使うことで、要素を変更・削除したタプルを得ることができます。

Last Updated: 6/26/2019, 10:34:03 PM