Pythonプログラミングを学ぶ上で、リストの操作は非常に重要なスキルです。
特に、2次元リストのソートはデータ処理や解析において頻繁に使用されるため、しっかりと理解しておくことが大切です。
この記事では、プログラミング初心者にもわかりやすく、2次元リストのソート方法を昇順・降順それぞれについて詳しく解説します。
2次元リストの昇順ソート
2次元リストとは、リストの中にリストが入っているデータ構造のことです。
この章では、2次元リストを昇順にソートする方法を解説します。
sorted関数
を使った方法
sorted関数
はソートしたリストを戻り値として返す関数です。元のリストは変更されません。
Pythonの組み込み関数であるsorted
を使って、2次元リストを昇順にソートする方法を紹介します。
ソートキーを指定する方法
sorted
関数を使って2次元リストを昇順にソートするには、key
引数にソートの基準となる列を指定します。
以下に例を示します。
data = [[3, "りんご"], [1, "みかん"], [2, "ぶどう"]]
# 0列目を基準に昇順ソート
sorted_data = sorted(data, key=lambda x: x[0])
print(sorted_data) # [[1, 'みかん'], [2, 'ぶどう'], [3, 'りんご']]
この例では、key
引数にlambda
関数を使って0列目を基準に昇順ソートしています。
1列目(果物の名前)でソートしたい場合はkey=lambda x: x[1]
となります。
複数の列を基準に昇順ソートする方法
複数の列を基準に昇順ソートする場合は、key
引数にタプルを返すlambda
関数を指定します。
以下に例を示します。
data = [[3, "りんご"], [1, "みかん"], [2, "ぶどう"], [1, "いちご"]]
# 0列目、1列目を基準に昇順ソート
sorted_data = sorted(data, key=lambda x: (x[0], x[1]))
print(sorted_data) # [[1, 'いちご'], [1, 'みかん'], [2, 'ぶどう'], [3, 'りんご']]
この例では、key
引数にlambda
関数を使って0列目と1列目を基準に昇順ソートしています。
これにより複雑な条件でのソートが可能になります。
sortメソッド
を使った方法
sort関数
は自身のリストをソートする関数です。元のリストが変更されません。それ以外は先ほど紹介したsorted関数と使い方が同じです。
リストのsort
メソッドを使って、2次元リストを昇順にソートする方法を紹介します。
ソートキーを指定する方法
sort
メソッドを使って2次元リストを昇順にソートするには、key
引数にソートの基準となる列を指定します。
以下に例を示します。
data = [[3, "りんご"], [1, "みかん"], [2, "ぶどう"]]
# 0列目を基準に昇順ソート
data.sort(key=lambda x: x[0])
print(data) # [[1, 'みかん'], [2, 'ぶどう'], [3, 'りんご']]
この例では、key
引数にlambda
関数を使って0列目を基準に昇順ソートしています。
複数の列を基準に昇順ソートする方法
複数の列を基準に昇順ソートする場合は、key
引数にタプルを返すlambda
関数を指定します。
以下に例を示します。
data = [[3, "りんご"], [1, "みかん"], [2, "ぶどう"], [1, "いちご"]]
# 0列目、1列目を基準に昇順ソート
data.sort(key=lambda x: (x[0], x[1]))
print(data) # [[1, 'いちご'], [1, 'みかん'], [2, 'ぶどう'], [3, 'りんご']]
この例では、key
引数にlambda
関数を使って0列目と1列目を基準に昇順ソートしています。
2次元リストの降順ソート
2次元リストを降順にソートする方法について解説します。
ここでは、sorted
関数とsort
メソッドを使った方法をそれぞれ紹介します。
sorted関数
を使った方法
sorted
関数は、リストをソートした新しいリストを返す関数です。
この関数を使って2次元リストを降順にソートする方法を見ていきましょう。
ソートキーを指定する方法
sorted
関数にkey
引数を指定することで、ソートの基準となるキーを設定できます。
以下の例では、2次元リストの各要素の1つ目の値を基準に降順ソートしています。
data = [[1, 2], [3, 1], [2, 3]]
sorted_data = sorted(data, key=lambda x: x[0], reverse=True)
print(sorted_data) # [[3, 1], [2, 3], [1, 2]]
key
引数には、ソートの基準となる値を返す関数を指定します。
ここでは、lambda
を使って無名関数を作成しています。
reverse
引数にTrue
を指定することで、降順ソートが行われます。
複数の列を基準に降順ソートする方法
複数の列を基準に降順ソートする場合は、key
引数に指定する関数で複数の値をタプルとして返すようにします。
以下の例では、1つ目の値を基準に降順ソートし、同じ値の場合は2つ目の値で降順ソートしています。
data = [[1, 2], [3, 1], [2, 3], [2, 1]]
sorted_data = sorted(data, key=lambda x: (x[0], x[1]), reverse=True)
print(sorted_data) # [[3, 1], [2, 3], [2, 1], [1, 2]]
sortメソッド
を使った方法
sort
メソッドは、リスト自体をソートするメソッドです。
sorted
関数と同様に、key
引数とreverse
引数を使って降順ソートを行うことができます。
ソートキーを指定する方法
以下の例では、2次元リストの各要素の1つ目の値を基準に降順ソートしています。
data = [[1, 2], [3, 1], [2, 3]]
data.sort(key=lambda x: x[0], reverse=True)
print(data) # [[3, 1], [2, 3], [1, 2]]
複数の列を基準に降順ソートする方法
複数の列を基準に降順ソートする場合も、key
引数に指定する関数で複数の値をタプルとして返すようにします。
以下の例では、1つ目の値を基準に降順ソートし、同じ値の場合は2つ目の値で降順ソートしています。
data = [[1, 2], [3, 1], [2, 3], [2, 1]]
data.sort(key=lambda x: (x[0], x[1]), reverse=True)
print(data) # [[3, 1], [2, 3], [2, 1], [1, 2]]
以上が、2次元リストを降順ソートする方法です。
sorted
関数とsort
メソッドの違いや、key
引数の使い方を理解することで、柔軟なソート処理が行えるようになります。