LoginSignup
3
1

More than 3 years have passed since last update.

【Python】リスト(配列)内要素の操作【ソート】

Last updated at Posted at 2020-02-10

はじめに

リストを扱う上で重要なソートの方法をまとめました。
基本的に以下のようなコードでコードと出力結果を記載します。

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

最後に

他にも何か方法が解法があれば教えてもらえると嬉しいです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1