Python でタプルに追加する

Rayven Esplanada 2023年1月30日
  1. Python でタプルを初期化する
  2. Python で連結 + を使用してタプルに追加する
  3. Python でタプルをリストに変換してタプルにアペンドする
Python でタプルに追加する

このチュートリアルでは、Python でタプルに追加する方法を説明します。

Python では、タプルはコレクションを保存するために使用される順序のない不変データ型です。タプルはリストによく似ていますが、長さが可変で突然変異可能なリストとは異なり、タプルは固定長で不変であるという違いがあります。

Python でタプルを初期化する

タプルデータ型は、括弧 () を用いて値をカプセル化することで初期化されます。タプル内の値は同じ型である必要はありません。

my_tuple = ("Jane Doe", 40, 0.05, "a", [1, 2, 3])

ここでは、異なるデータ型の 4つの値を含むタプルの初期化の例を示します。入れ子になったタプルもサポートされています。

組み込み関数 tuple() を用いてリストをタプルに変換することもできます。これは任意のリストをタプルに変換します。

my_list = [1, 2, 3, 4, 5]

print(tuple(my_list))

出力:

(1, 2, 3, 4, 5)

タプルの初期化について説明したので、次に不変タプルに追加する方法に移ることができます。

Python で連結 + を使用してタプルに追加する

繰り返しになりますが、タプルデータ型は不変であり、初期化された値は決して変更できません。不変データ型のもう一つの例が文字列です。

文字列と同様に、タプルの値は、既存の値に新しい値を連結するだけで変更または追加することができます。これは、2つの異なるタプルのセットを 1つに結合しますが、実際には既存の値を変更することはなく、データ型の不変性を維持しています。

例えば、ここに 2つの別々のタプルがあります。3 番目の変数は、これら 2つのタプルを連結することで初期化されます。

tuple_a = ("a", "b", "c")
tuple_b = ("d", "e", "f")
tuple_c = tuple_a + tuple_b

print(tuple_c)

出力:

('a', 'b', 'c', 'd', 'e', 'f')

変数 tuple_c は、2つのタプルを連結した値で初期化されます。

タプルを連結する別の方法があります。

tuple_a = ("c", "d", "f")
tuple_b = ("a", "b") + tuple_a + ("g", "h")

print(tuple_b)

出力:

('a', 'b', 'c', 'd', 'f', 'g', 'h')

アルファベット順に見ると、上の出力には e という文字がありません。また、連結を使用してタプルの途中に値を挿入する方法はありません。

この方法の唯一の欠点は、既存のタプルの先頭か末尾のどちらかでしか連結できないので、タプルの途中に値を挿入することができないことです。

Python でタプルをリストに変換してタプルにアペンドする

Python でタプルに追加するより柔軟で便利なアプローチは、タプルをリストに変換することです。

この方法では、組み込みのリスト関数が値に対して実行され、リスト内の任意の場所への挿入や削除を便利に行うことができます。すべての操作が終わった後、リストは不変のタプルに変換されます。

ここでは、新しい要素を挿入するためのタプルからリストへの変換の例を示します。

tuple_val = (11, 52, 67, 142)
list_val = list(tuple_val)

l.insert(1, 20)
print(l)

tuple_val = tuple(list_val)
print(tuple_val)

タプルはまずリストに変換され、組み込みの insert() 関数を使って既存の値の間に値を挿入します。その後、リストはタプルに変換されます。

出力:

[11, 20, 52, 67, 142]
(11, 20, 52, 67, 142)

タプルをリストに変換すると、sort()remove() などの組み込み関数やその他のリスト操作の可能性が広がります。

まとめると、タプルは不変の性質を持っているため、リストのように単純に変更することはできません。タプルに追加する最も広範な方法は、タプルをリストに変換することです。必要な追加がタプルの先頭か末尾のどちらかだけであれば、単純な連結 + を使用することができます。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python Tuple