Pythonで連続するタプルを拡張・結合する方法
はじめに
Pythonでは、リスト内の連続するタプル同士を結合して新しいタプルを生成したいケースがあります。このような場合、シンプルなforループによる反復処理を使うことで簡単に実現できます。
本記事では、タプルのリストを降順にソートしたうえで、隣り合うタプルを順番に連結する方法を、サンプルコードと実行結果とともに解説します。
サンプルコード
以下のコードでは、複数のタプルを含むリストを定義し、降順にソートした後、隣接するタプル同士を結合しています。
my_list = [(13, 526, 73), (23, 67, 0, 72, 24, 13), (94, 42), (11, 62, 23, 12), (93,), (83, 61)]
print("The list is :")
print(my_list)
my_list.sort(reverse=True)
print("The list after sorting in reverse is :")
print(my_list)
my_result = []
for index in range(len(my_list) - 1):
my_result.append(my_list[index] + my_list[index + 1])
print("The result is :")
print(my_result)
実行結果
The list is : [(13, 526, 73), (23, 67, 0, 72, 24, 13), (94, 42), (11, 62, 23, 12), (93,), (83, 61)] The list after sorting in reverse is : [(94, 42), (93,), (83, 61), (23, 67, 0, 72, 24, 13), (13, 526, 73), (11, 62, 23, 12)] The result is : [(94, 42, 93), (93, 83, 61), (83, 61, 23, 67, 0, 72, 24, 13), (23, 67, 0, 72, 24, 13, 13, 526, 73), (13, 526, 73, 11, 62, 23, 12)]
コードの解説
まず、複数のタプルを含むリスト
my_listを定義し、コンソールに表示します。次に、
sort()メソッドにreverse=Trueを指定してリストを降順にソートし、その結果を表示します。結合結果を格納するための空のリスト
my_resultを用意します。forループでリストを反復処理し、現在の要素と次の要素を「+」演算子で連結した新しいタプルを
my_resultに追加していきます。ループ範囲をlen(my_list) - 1とすることで、インデックス超過を防いでいます。最終的に、隣接するタプル同士が結合されたリストがコンソールに出力されます。
まとめ
このように、range()による反復処理とタプルの連結演算子「+」を組み合わせることで、連続するタプルを簡単に拡張できます。なお、より簡潔に書きたい場合は、リスト内包表記とzip()を組み合わせて [a + b for a, b in zip(my_list, my_list[1:])] のように記述する方法もあります。用途に応じて使い分けるとよいでしょう。
-
Pythonでタプルを更新する方法【連結による新規作成を解説】
タプル(tuple)はイミュータブル(変更不可)なデータ構造です。そのため、一度作成したタプルの要素を後から更新したり書き換えたりすることはできません。 ただし、既存のタプルの一部を取り出して組み合わせることで、新しいタプルを作成することは可能です。以下の例で具体的に見ていきましょう。 サンプルコード #!/usr/bin/python tup1 = (12, 34.56) tup2 = (abc, xyz) # 次のような操作はタプルでは無効です # tup1[0] = 100 # 代わりに、次のように新しいタプルを作成します tup3 = tup1 + tup2 print(tup3
-
Pythonタプル(tuple)入門:作成・操作・削除の基本をコード例で解説
Pythonにおけるタプル(tuple)は、順序付け(ordered)かつ変更不可(immutable)という特徴を持つコレクションです。変更不可であるため、一度作成したタプルに要素を追加したり削除したりすることはできません。 タプルは丸括弧 () と、最低1つのカンマ , を使って作成します。 また、タプルはリストと同じようにインデックス指定やスライシングが可能ですが、スライスの結果もタプルとして返される点に注意しましょう。 タプルの作り方 colorsTuple = (red, green, blue) print(colorsTuple) 実行結果: (red, green, blue