Pythonのリスト内の要素を並べ替える

概要

実現方法・説明

ここではリスト内の要素の並べ替えを説明する。

sort()を使う

リスト内の要素を直接並べ替えるときはsort()を使う。
こんな感じ。

new_list = [‘zzz’, ‘yyy’, ‘aaa’, ‘ccc’, ‘bbb’]
new_list.sort()

リスト「new_list」を並べ替えした例である。
「new_list」の内容が直接ソートされる。

sort()した後の「new_list」の内容は
[‘aaa’, ‘bbb’, ‘ccc’, ‘yyy’, ‘zzz’]になる

sort(reverse=True)を使う

リスト内の要素を直接並べ替える際に、降順にしたい場合は「reverse=True」を使うとよい

こんな感じ。

new_list = [‘zzz’, ‘yyy’, ‘aaa’, ‘ccc’, ‘bbb’]
new_list.sort(reverse=True)

リスト「new_list」を並べ替えした例である。
「new_list」の内容が直接ソートされる。

sort(reverse=True)した後の「new_list」の内容は
[‘zzz’, ‘yyy’, ‘ccc’, ‘bbb’, ‘aaa’]になる

sorted()を使う

リスト内の要素を並べ替えて他のリストを生成するときはsorted()を使う。
こんな感じ。

new_list = [‘zzz’, ‘yyy’, ‘aaa’, ‘ccc’, ‘bbb’]
tmp_list = sorted(new_list)

リスト「new_list」を並べ替えした値で「tmp_list」を生成した例である。
ソート後でも「new_list」の内容は変わらない。
sorted()した後の「tmp_list」の内容は
[‘aaa’, ‘bbb’, ‘ccc’, ‘yyy’, ‘zzz’]になる

sorted()でも「reverse=True」を使うことが出来る
こんな感じ。

new_list = [‘zzz’, ‘yyy’, ‘aaa’, ‘ccc’, ‘bbb’]
tmp_list = sorted(new_list, reverse=True)

sorted()した後の「tmp_list」の内容は
[‘zzz’, ‘yyy’, ‘ccc’, ‘bbb’, ‘aaa’]になる

注意点

・sort()を使用すると元のリストは無くなるので、ソート前後の値を両方保持したい場合は、sorted()を使用する。
・リストに含まれる要素の方がすべて同じ場合は、sort()は正しく動作する。型が混じっている場合は、保証されない。
・多次元のリストを複数のソートキーで並べ替えるときは別途説明する。

使用例

動作確認環境:Python3.6.5 / macOS 10.15.6

ex.1 sort()を使う

一次元のリストを作成し、昇順にソートする。

コード
#リストの定義
new_list = ['zzz', 'yyy', 'aaa', 'ccc', 'bbb']

#リストの要素の並べ替え
new_list.sort()
print(new_list)
実行結果

[‘aaa’, ‘bbb’, ‘ccc’, ‘yyy’, ‘zzz’]

解説

2行めで要素が5つのリスト「new_list」を作成する。
5行めで「new_list」をソートする。
6行めで「new_list」の値を表示するとリスト内の要素がソートされていることがわかる。

ex.2 sort(reverse=True)を使う

一次元のリストを作成し、降順にソートする。

コード
#リストの定義
new_list = ['zzz', 'yyy', 'aaa', 'ccc', 'bbb']

#リストの要素の並べ替え
new_list.sort(reverse=True)
print(new_list)
実行結果

[‘zzz’, ‘yyy’, ‘ccc’, ‘bbb’, ‘aaa’]

解説

2行めで要素が5つのリスト「new_list」を作成する。
5行めで「new_list」をreverse=Trueでソートする。
6行めで「new_list」の値を表示するとリスト内の要素が降順でソートされていることがわかる。

ex.3 sortedを使う

一次元のリストを作成し、昇順にソートした後、降順にソートする。

コード
#リストの定義
new_list = ['zzz', 'yyy', 'aaa', 'ccc', 'bbb']

#リストの要素の並べ替え(昇順)
tmp_list = sorted(new_list)

#内容の表示
print('--- 元のリスト ---')
print(new_list)
print('--- ソート後のリスト ---')
print(tmp_list)

#リストの要素の並べ替え(降順)
tmp_list = sorted(new_list, reverse=True)

#内容の表示
print('--- 元のリスト ---')
print(new_list)
print('--- ソート後のリスト ---')
print(tmp_list)
実行結果

— 元のリスト —
[‘zzz’, ‘yyy’, ‘aaa’, ‘ccc’, ‘bbb’]
— ソート後のリスト —
[‘aaa’, ‘bbb’, ‘ccc’, ‘yyy’, ‘zzz’]
— 元のリスト —
[‘zzz’, ‘yyy’, ‘aaa’, ‘ccc’, ‘bbb’]
— ソート後のリスト —
[‘zzz’, ‘yyy’, ‘ccc’, ‘bbb’, ‘aaa’]

解説

2行めで要素が5つのリスト「new_list」を作成する。
5行めで「new_list」をソートして「tmp_list」に代入する。
8,10行めで「new_list」と「tmp_list」の値を表示する。
元のリスト「new_list」の並びは変わっていない。
代入したリスト「tmp_list」の要素が昇順でソートされていることがわかる。

14行めで「new_list」を逆順ソートして「tmp_list」に代入する。
18,20行めで「new_list」と「tmp_list」の値を表示する。
元のリスト「new_list」の並びは変わっていない。
代入したリスト「tmp_list」の要素が降順でソートされていることがわかる。

補足

なし

Pythonバンザイ

タイトルとURLをコピーしました