Pythonでタプルを合計桁数順に並べ替える方法
Pythonでは、タプルのリストを「各タプルに含まれる要素の桁数の合計」に基づいて並べ替えたい場面があります。例えば、データの規模や長さに応じて整理したいときなどに便利なテクニックです。
基本的な考え方はシンプルです。各要素を文字列に変換し、その文字列の長さ(=桁数)を取得して合計する関数を定義し、それをsortメソッドのキーとして指定します。
サンプルコード
def count_tuple_digits(row):
return sum([len(str(element)) for element in row])
my_tuple = [(32, 14, 65, 723), (13, 26), (12345,), (137, 234, 314)]
print("The tuple is :")
print(my_tuple)
my_tuple.sort(key = count_tuple_digits)
print("The result is :")
print(my_tuple)実行結果
The tuple is : [(32, 14, 65, 723), (13, 26), (12345,), (137, 234, 314)] The result is : [(13, 26), (12345,), (32, 14, 65, 723), (137, 234, 314)]
コードの解説
count_tuple_digitsという名前の関数を定義します。この関数はタプルを引数として受け取り、リスト内包表記を使ってすべての要素をstr()で文字列に変換し、len()でそれぞれの桁数を取得します。取得した桁数は
sum()メソッドによって合計され、その結果が関数の戻り値として返されます。複数のタプルを含むリストを定義し、コンソールに表示します。
sortメソッドのkey引数に先ほどの関数を指定することで、各タプルの桁数の合計値を基準に昇順で並べ替えを行います。並べ替え後のリストがコンソールに出力されます。
並べ替えの仕組み
各タプルの桁数の合計は以下のように計算されます。
(13, 26) → 2 + 2 = 4桁
(12345,) → 5桁
(32, 14, 65, 723) → 2 + 2 + 2 + 3 = 9桁
(137, 234, 314) → 3 + 3 + 3 = 9桁
そのため、結果は「(13, 26)」「(12345,)」「(32, 14, 65, 723)」「(137, 234, 314)」の順になります。なお、最後の2つのタプルはどちらも合計9桁ですが、Pythonのソートは安定(スタブル)であるため、元のリストでの登場順序が維持されます。
-
Pythonでタプルのリストからタプルを組み合わせる方法
データ分析では、Pythonが提供するさまざまなデータ構造を組み合わせて扱うことがよくあります。リストにはタプルを要素として格納できるため、「リストの中にタプルがある」という構造も簡単に作れます。本記事では、タプルの各要素を別の要素と組み合わせて、新しい「タプルの組み合わせリスト」を生成する方法を、具体的なコード例とともに解説します。方法1:forループ(リスト内包表記)を使うまずは最も基本的な方法です。リスト内包表記の中でforループをネストし、各タプルからリスト部分の要素を1つずつ取り出しながら、同じタプル内のもう1つの要素(ここでは曜日の文字列)とペアを作成していきます。コード例Alis
-
Pythonタプル(tuple)入門:作成・操作・削除の基本をコード例で解説
Pythonにおけるタプル(tuple)は、順序付け(ordered)かつ変更不可(immutable)という特徴を持つコレクションです。変更不可であるため、一度作成したタプルに要素を追加したり削除したりすることはできません。 タプルは丸括弧 () と、最低1つのカンマ , を使って作成します。 また、タプルはリストと同じようにインデックス指定やスライシングが可能ですが、スライスの結果もタプルとして返される点に注意しましょう。 タプルの作り方 colorsTuple = (red, green, blue) print(colorsTuple) 実行結果: (red, green, blue