はじめに
リストを扱う上で重要なソートの方法をまとめました。
基本的に以下のようなコードでコードと出力結果を記載します。
ex.py
code = 'コード'
print(code)
# code(出力結果)
リストを昇順または降順にソートするsort(),sorted()
Pythonでリストを昇順または降順にソートするにはsort()
とsorted()
の2つの方法がある。文字列やタプルをソートしたい場合はsorted()
を使う。
・sort():元のリストをソート
※元のリスト自体が書き換えられる破壊的処理。
sort().py
org_list = [3, 1, 4, 5, 2]
org_list.sort()
print(org_list)
# [1, 2, 3, 4, 5]
# sort()が返すのはNoneなので注意。
print(org_list.sort())
# None
# デフォルトは昇順。降順にソートしたい場合は引数reverseをTrueとする。
org_list.sort(reverse=True)
print(org_list)
# [5, 4, 3, 2, 1]
sorted(): ソートした新たなリストを生成
※引数にソートしたいリストを指定するとソートされたリストを返す。元のリストは変更されない非破壊的処理。
sorted().py
org_list = [3, 1, 4, 5, 2]
new_list = sorted(org_list)
print(org_list)
# [3, 1, 4, 5, 2]
print(new_list)
# [1, 2, 3, 4, 5]
# デフォルトは昇順。降順にソートしたい場合は引数reverseをTrueとする
new_list_reverse = sorted(org_list, reverse=True)
print(org_list)
# [3, 1, 4, 5, 2]
print(new_list_reverse)
# [5, 4, 3, 2, 1]
sorted()を用いた文字列のソート
sorted()関数の引数に文字列を指定すると、ソートされた文字列の一文字ずつが要素として格納されたリストが返される。
sorted()_.py
org_str = 'cebad'
print(org_str)
# cebad
new_str_list = sorted(org_str)
print(new_str_list)
# ['a', 'b', 'c', 'd', 'e']
# 文字列のリストを連結して一つの文字列にするにはjoin()メソッドを使う。
new_str = ''.join(new_str_list)
print(new_str)
# abcde
# まとめて書いてもOK。降順にソートしたい場合は引数reverseをTrueとする。
new_str_reverse = ''.join(sorted(org_str, reverse=True))
print(new_str_reverse)
# edcba
リストや文字列を逆順に並べ替えるreverse(), reversed()
Pythonでリストの要素を逆順に並べ替えるにはreverse()
, reversed()
およびスライスを使った方法がある。文字列やタプルを逆順に並べ替えたい場合はreversed()
かスライスを使う。
・reverse(): 元のリストを逆順に並べ替え
※元のリスト自体が書き換えられる破壊的処理。
sort().py
org_list = [1, 2, 3, 4, 5]
org_list.reverse()
print(org_list)
# [5, 4, 3, 2, 1]
# reverse()が返すのはNoneなので注意。
print(org_list.reverse())
# None
・reversed(): 逆順に取り出すイテレータを生成
※reversed()は要素を逆順に取り出すイテレータを返す。元のリストは変更されない非破壊的処理。
sort().py
org_list = [1, 2, 3, 4, 5]
reverse_iterator = reversed(org_list)
print(org_list)
# [1, 2, 3, 4, 5]
# reversed()はリストではなくイテレータを返すので注意。list()でイテレータをリストに変換する。
new_list = list(reversed(org_list))
print(new_list)
# [5, 4, 3, 2, 1]
・スライスによって逆順に並べ替え
ex.py
org_list = [1, 2, 3, 4, 5]
new_list = org_list[::-1]
print(new_list)
# [5, 4, 3, 2, 1]
org_str = 'abcde'
new_str = org_str[::-1]
print(new_str)
# edcba
最後に
他にも何か方法が解法があれば教えてもらえると嬉しいです。