13.1 要素の追加
タプルって不変のオブジェクトなんだよね。一度作成すると、 変更できない。でも、オブジェクトそのものは変更できなくても、 その変更されたコピーが欲しいときってあるじゃん。
これってstr
クラスでやってることと一緒だよね。元のstr
オブジェクトは変更されないけど、
メソッドを呼び出すことによって、新しい文字列が返されるって感じ。
Pythonの開発者は、tuple
クラスにメソッドを追加して、
タプルを変更するたびに新しいオブジェクトを返すようにすることもできたんだろうけど、
それはやらなかったんだよね。きっと、僕たちが混乱しないようにとか、他の理由があったんだと思う。
だからタプルの変更はこういう流れでやるよ:
リスト = list(タプル)
ここでリストを変更して
タプル2 = tuple(リスト)
append()
メソッド:
例えば、タプルに要素を追加したい時はこんな感じでやるんだよね:
my_tuple = (1, 2, 3)
my_list = list(my_tuple)
my_list.append(4) # リストに要素を追加する
my_new_tuple = tuple(my_list)
複数の要素を追加するには — extend()
メソッド:
extend()
メソッドを使うと、リストに一気に複数の
要素を追加できるんだ。メソッドの引数には、他のリスト、タプル、集合みたいな
イテラブルオブジェクトを渡すことができるよ:
my_tuple = (1, 2, 3, 4)
my_list = list(my_tuple)
my_list.extend((5, 6)) # リストに要素を追加する
my_new_tuple = tuple(my_list)
真ん中に挿入する — insert()
メソッド
insert()
メソッドを使うと、指定された位置に要素を
挿入できるんだ。このメソッドは2つの引数を取るよ: 要素を置く位置の
インデックスとその要素ね:
my_tuple = (1, 2, 3, 4)
my_list = list(my_tuple)
my_list.insert(0, 0) # リストの最初に0を追加する
my_new_tuple = tuple(my_list)
13.2 要素の変更
タプルのどこかの要素を変更したいときも、同じ流れでやるよ:
リスト = list(タプル)
# ここでリストを変更して
タプル2 = tuple(リスト)
一つ目の要素に最後の値を、最後の要素に最初の値を代入してみようか。 こんなコードが必要になるよ:
my_tuple = (1, 2, 3, 4)
my_list = list(my_tuple)
my_list[0], my_list[-1] = my_list[-1], my_list[0] # 値を入れ替える
my_new_tuple = tuple(my_list)
print(my_new_tuple) # (4, 2, 3, 1)
13.3 要素の削除
タプルから要素を削除する場合も、同じ流れでやるよ。
例えば、タプルから 特定の値を削除したいときは
atuple = ("apple", "banana", "cherry")
alist = list(atuple)
alist.remove("apple")
atuple = tuple(alist)
print(atuple) # ('banana', 'cherry')
ちなみに、最後に新しいtupleオブジェクトを元のtuple
の変数に
代入すると、元のtuple
はそのままだから、他のコードでその
変更前のtuple
にリンクされていると、引き続き元のtuple
を指すよ。
じゃあ、次はタプルの最後の要素を削除しようか。
こんなコードになるよ:
atuple = ("apple", "banana", "cherry")
alist = list(atuple)
alist.pop() # 最後の要素を削除する
atuple = tuple(alist)
print(atuple) # ('apple', 'banana')
このロジックが分かればいいと思う。タプルの要素は削除できないけど、どうしてもやりたいならやれるよね 😊
GO TO FULL VERSION