Pythonでリストをソートするsortとsorted
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]
となり元のリストが降順にソートされ、元のリストは変更されていないことが確認できます。
リンク