Pythonでリストとタプルを相互に変換するlist(), tuple()
Pythonでリストとタプルを相互に変換するにはlist()
とtuple()
を使う。リストとタプルだけでなく集合(set
)などのイテラブルオブジェクトを引数に与えることができる。
以下のリスト、タプル、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'>
source: list_tuple.py
range()
がrangeオブジェクトを返すようになったのはPython3から。以下の記事を参照。
- 関連記事: Pythonのrange関数の使い方
なお、便宜上、変換という言葉を使っているが、実際は新たなオブジェクトが生成され、元のオブジェクトはそのまま。
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'>
source: list_tuple.py
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'>
source: list_tuple.py
タプルの要素を追加・変更
タプルはイミュータブル(更新不可)なので要素を変更したり削除したりすることはできないが、list()
でリスト化して要素を変更・削除後、再度tuple()
を使うことで、要素を変更・削除したタプルを得ることができる。
詳細は以下の記事を参照。
- 関連記事: Pythonでタプルの要素を追加・変更・削除