Pythonでタプルのリストを合計桁数に基づいて並べ替える方法
Pythonでは、タプルのリスト内の要素を「各要素の桁数の合計」に基づいて並べ替えたい場合、組み込みの sorted メソッドと lambda(ラムダ)関数を組み合わせることで、シンプルかつ効率的に実現できます。
以下に具体的な実装例を示します。
サンプルコード
my_list = [(11, 23, 45, 678), (34, 67), (653,), (78, 99, 23, 45), (67, 43)]
print("The list is : ")
print(my_list)
my_result = sorted(my_list, key = lambda tup : sum([len(str(ele)) for ele in tup ]))
print("The sorted tuples are ")
print(my_result)
出力結果
The list is : [(11, 23, 45, 678), (34, 67), (653,), (78, 99, 23, 45), (67, 43)] The sorted tuples are [(653,), (34, 67), (67, 43), (78, 99, 23, 45), (11, 23, 45, 678)]
処理の解説
まず、複数のタプルを含むリストを定義し、コンソールに表示します。
lambda関数を使って、各タプル内の要素を1つずつ取り出し、str()で文字列型に変換したうえでlen()によって桁数を取得します。取得した各要素の桁数を
sum()で合計し、その値を並べ替えのキーとして使用します。sortedメソッドがこのキーをもとにタプルのリストを昇順にソートします。そのため、合計桁数が少ないタプルほど先頭に配置されます。最後に、ソート済みの結果を変数に代入し、コンソールに出力して確認します。
この手法を使えば、数値そのものの大小ではなく「桁数の合計」という独自の基準で柔軟にデータを並べ替えることができます。例えば、要素数や値の大きさが異なるタプルが混在するデータセットを整理したい場合などに非常に便利です。
-
Pythonでタプルを更新する方法【連結による新規作成を解説】
タプル(tuple)はイミュータブル(変更不可)なデータ構造です。そのため、一度作成したタプルの要素を後から更新したり書き換えたりすることはできません。 ただし、既存のタプルの一部を取り出して組み合わせることで、新しいタプルを作成することは可能です。以下の例で具体的に見ていきましょう。 サンプルコード #!/usr/bin/python tup1 = (12, 34.56) tup2 = (abc, xyz) # 次のような操作はタプルでは無効です # tup1[0] = 100 # 代わりに、次のように新しいタプルを作成します tup3 = tup1 + tup2 print(tup3
-
タプルを任意のキーで昇順にソートするPythonプログラム
タプルのリストが与えられたとき、任意の要素(キー)を基準として昇順に並べ替えることを考えます。この処理にはPython組み込みのsorted()関数を使用し、key引数に「どのインデックスの値で比較するか」を返す関数を渡すことで、指定したキーに従ったソートを実現します。 例 入力: A = [(2, 55), (1, 20), (4, 40), (2, 30)] k = 0 出力: [(1, 20), (2, 30), (2, 55), (4, 40)] この例では、各タプルの0番目(先頭)の要素をキーとして昇順にソートしています。その結果、先頭の値が小さい順にタプルが並べ替え