Pythonでタプルの要素をソート(sorted)
この記事では、Pythonでタプルの要素をソートする方法を説明します。タプルはイミュータブルなため、タプル自身を直接ソートすることはできませんが、sorted()関数を使ってソートした新しいリストを作成できます。また、タプルの要素をキーとしてソートする方法についても解説します。
目次
sorted()関数によるソート
Pythonの`sorted()`関数は、イテラブルなオブジェクト(リスト、タプルなど)の要素をソートして、新しいソート済みのリストを返します。タプルを`sorted()`関数に渡すと、タプルの要素をソートした新しいリストが得られます。
my_tuple = (3, 1, 4, 1, 5, 9, 2, 6)
sorted_list = sorted(my_tuple)
print(sorted_list) # 出力: [1, 1, 2, 3, 4, 5, 6, 9]
元のタプル`my_tuple`は変更されません。`sorted()`関数は新しいソート済みのリストを返します。
タプルをキーとしてソートする
タプルを要素とするリストを、タプルの特定の要素をキーにしてソートすることができます。`sorted()`関数の`key`引数に、キーとなる要素を取り出す関数を指定します。
my_list = [('apple', 2), ('banana', 1), ('cherry', 3)]
sorted_list = sorted(my_list, key=lambda x: x[1])
print(sorted_list) # 出力: [('banana', 1), ('apple', 2), ('cherry', 3)]
この例では、`lambda x: x[1]`は、タプルの2番目の要素(数値)をキーとして使用することを指定しています。
キー関数を使ったソート
より複雑なソートを行うには、カスタムのキー関数を定義できます。例えば、タプルの文字列要素の長さでソートできます。
my_list = [('apple', 2), ('banana', 1), ('cherry', 3)]
def key_function(item):
return len(item[0])
sorted_list = sorted(my_list, key=key_function)
print(sorted_list) # 出力: [('apple', 2), ('cherry', 3), ('banana', 1)]
この例では、`key_function`はタプルの最初の要素(文字列)の長さを返します。`sorted()`関数は、この長さをキーとしてソートを行います。
サンプルコード
my_tuple = (3, 1, 4, 1, 5, 9, 2, 6)
sorted_list = sorted(my_tuple)
print(f"sorted()でソート: {sorted_list}")
my_list = [('apple', 2), ('banana', 1), ('cherry', 3)]
sorted_list_by_number = sorted(my_list, key=lambda x: x[1])
print(f"タプルの数値でソート: {sorted_list_by_number}")
def key_function(item):
return len(item[0])
sorted_list_by_length = sorted(my_list, key=key_function)
print(f"タプルの文字列の長さでソート: {sorted_list_by_length}")
上記のコードは、`sorted()`関数の基本的な使用方法と、`key`引数を使ったソートの例を示しています。実行結果から、それぞれ異なるキーでソートされていることが確認できます。