PYTHON MEBY

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`引数を使ったソートの例を示しています。実行結果から、それぞれ異なるキーでソートされていることが確認できます。

関連記事