Pythonでリストをソートするsortとsorted

2021/02/10PythonPythonの基本

記事内に広告が含まれています。

Pythonでリスト変数をソートするためにリストオブジェクトにあるsort()メソッドと、組み込み関数のsorted()が用意されています。

この記事ではこのsort()とsorted()の違いについて解説します。

リストオブジェクトのsort()

リストオブジェクトが持つsort()は元のリストがソート結果に書き替えられる破壊的処理です。

また戻り値はありません。

リストオブジェクトのsort()で昇順にソート

リストオブジェクトのsort()で昇順にソートにはキーワード引数reverseにFalseを渡すか、指定せずに呼び出します。

l = [ 3, 5, 2, 1, 4, 6, 7, 9, 8 ]

print( "-----昇順にソート----------" )
print( "sort前={}".format( l ))
l.sort()
print( "sort後={}".format( l ))

上記の実行結果は

-----昇順にソート----------
sort前=[3, 5, 2, 1, 4, 6, 7, 9, 8]
sort後=[1, 2, 3, 4, 5, 6, 7, 8, 9]

となり元のリストが昇順にソートされた結果で上書きされています。

リストオブジェクトのsort()で降順にソート

リストオブジェクトのsort()で降順にソートにはキーワード引数reverseにTrueを渡して呼び出します。

l = [ 3, 5, 2, 1, 4, 6, 7, 9, 8 ]
print( "------降順にソート---------" )
print( "sort前={}".format( l ))
l.sort( reverse=True )
print( "sort後={}".format( l ))

上記の実行結果は

------降順にソート---------
sort前=[3, 5, 2, 1, 4, 6, 7, 9, 8]
sort後=[9, 8, 7, 6, 5, 4, 3, 2, 1]

となり元のリストが降順にソートされた結果で上書きされています。

組み込み関数のsorted()

組み込み関数のsortedは元のリストがソート結果に書き替えられない非破壊的処理です。

戻り値はソートされたリストオブジェクトです。

組み込み関数のsorted()で昇順にソート

組み込み関数のsorted()で昇順にソートにはキーワード引数reverseにFalseを渡すか、指定せずに呼び出します。

l = [ 3, 5, 2, 1, 4, 6, 7, 9, 8 ]
print( "-----昇順にソート----------" )
print( "sorted呼出前={}".format( l ))
print( "sorted呼出={}".format( sorted( l ) ))
print( "sorted呼出後={}".format( l ))

上記の実行結果は

-----昇順にソート----------
sorted呼出前=[3, 5, 2, 1, 4, 6, 7, 9, 8]
sorted呼出=[1, 2, 3, 4, 5, 6, 7, 8, 9]
sorted呼出後=[3, 5, 2, 1, 4, 6, 7, 9, 8]

となり元のリストが昇順にソートされ、元のリストは変更されていないことが確認できます。

組み込み関数のsorted()で降順にソート

組み込み関数のsorted()で降順にソートにはキーワード引数reverseにFalseを渡すか、指定せずに呼び出します。

l = [ 3, 5, 2, 1, 4, 6, 7, 9, 8 ]
print( "-----降順にソート----------" )
print( "sorted呼出前={}".format( l ))
print( "sorted呼出={}".format( sorted( l, reverse=True )))
print( "sorted呼出後={}".format( l ))

上記の実行結果は

-----降順にソート----------
sorted呼出前=[3, 5, 2, 1, 4, 6, 7, 9, 8]
sorted呼出=[9, 8, 7, 6, 5, 4, 3, 2, 1]
sorted呼出後=[3, 5, 2, 1, 4, 6, 7, 9, 8]

となり元のリストが降順にソートされ、元のリストは変更されていないことが確認できます。

システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ