note.nkmk.me

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

Date: 2018-02-06 / Modified: 2018-02-13 / tags: Python, リスト

Pythonでリスト(配列)とタプルを相互に変換したいときは、list()tuple()を使う。

list()tuple()はそれぞれlist型とtuple型のコンストラクタ。

list型やtuple型、range型などのイテラブルオブジェクトを引数に与えると、list型とtuple型の新たなオブジェクトを返す。

以下の変数を例とする。

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'>
スポンサーリンク

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()

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'>

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

タプルはイミュータブル(変更不可)なので、要素を変更(新たな値を代入)することはできない。

# t[0] = 'ONE'
# TypeError: 'tuple' object does not support item assignment

list()でリスト化して要素を変更後、再度tuple()を使うことで、要素を変更したタプルを得ることができる。

tl = list(t)
tl[0] = 'ONE'
t_new = tuple(tl)
print(t_new)
print(type(t_new))
# ('ONE', 'two', 'three')
# <class 'tuple'>

タプルにはリストのappend()のように要素を追加するメソッドはないが、+演算子で別のタプルと連結(結合)することはできる。元のタプルオブジェクトは変更されず、連結された新たなタプルオブジェクトが生成される。

t2 = t + ('four', 'five')
print(t)
print(t2)
# ('one', 'two', 'three')
# ('one', 'two', 'three', 'four', 'five')

要素をひとつだけ追加したい場合もタプル型にしないとダメ。,をつける必要があるので注意。

# t2 = t + ('four')
# TypeError: can only concatenate tuple (not "str") to tuple

t2 = t + ('four', )
print(t)
print(t2)
# ('one', 'two', 'three')
# ('one', 'two', 'three', 'four')

タプルの途中に新たに要素を挿入したい場合は、上の要素の変更のようにlist()でリスト化してinsert()で要素を挿入後、再度tuple()を使う。

tl = list(t)
tl.insert(2, 'XXX')
t_new = tuple(tl)
print(t_new)
print(type(t_new))
# ('one', 'two', 'XXX', 'three')
# <class 'tuple'>
スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事