【Python連載】リストの要素を並び替える


作ったリスト中身を並べ替えてみましょう。


昇順/降順

昇順/降順に並べ替える方法は2通りあります。

  • sort()を使う
  • sorted()を使う

では順番に見ていきましょう。


○sort()を使う

まずは基本的な書き方。
変数名.sort()
これだけです。早速書いてみましょう。

numbers = [22, 44, 33, 55, 11]
numbers.sort()

print(numbers)
C:\Python> python sort1.py
[11, 22, 33, 44, 55]

sort()を引数無しで実行すると、昇順に並び替わる事がわかったかと思います。
では次は降順にしてみます。

numbers = [22, 44, 33, 55, 11]
numbers.sort(reverse=True)

print(numbers)
C:\Python> python sort2.py
[55, 44, 33, 22, 11]

sort()を実行する際、引数としてreverse=Trueを渡すことで降順に並び替わります。
さて、数値の場合は昇順/降順がピンときやすいかと思いますが、
文字列の場合はどうなるのでしょうか。

var = ["B", "c", "A", "a", "b", "C"]

print("-----")
print("昇順")
var.sort()
print(var)

print("-----")
print("降順")
var.sort(reverse=True)
print(var)

print("-----")
C:\Python> python sort3.py

—–
昇順
[‘A’, ‘B’, ‘C’, ‘a’, ‘b’, ‘c’]
—–
降順
[‘c’, ‘b’, ‘a’, ‘C’, ‘B’, ‘A’]
—–

大文字→小文字と並んでいますね。
同じ大文字の中ではきちんとアルファベット順に並んでいるようですね。

ここまでで紹介したsort()は元のリスト自体を変更していることも覚えておいてください。


○sorted()を使う

名前は似ていますが書き方は異なります。
sorted(変数)
こちらは並び替えたリストを返してくれますが、元のリストは変更が行われません。

実際に見てみましょう。

numbers = [22, 44, 33, 55, 11]

print("-----")
print("昇順")
numbers_asc = sorted(numbers)
print(numbers_asc)

print("-----")
print("降順")
numbers_desc = sorted(numbers, reverse=True)
print(numbers_desc)

print("-----")
print("元のリスト")
print(numbers)

print("-----")
C:\Python> python sort3.py

—–
昇順
[11, 22, 33, 44, 55]
—–
降順
[55, 44, 33, 22, 11]
—–
元のリスト
[22, 44, 33, 55, 11]

—–

元のリストの並びが変わっていない事を確認できたと思います。

まとめ

昇順/降順で並び替える方法は2つ。
・sort()を使う
・sorted()を使う。

2つの違いは「元のリストが並び変えられるかどうか」。
時と場合で使い分けよう。


確認問題

1.sort()を使って並び替えてみよう。

hiragana = [“な”, “あ”, “わ”, “か”, “た”, “は”, “さ”, “ら”, “ま”, “や”]

この配列を並び替えてみよう。

2.sorted()を使って並び替えてみよう。

hiragana = [“が”, “ぱ”, “な”, “あ”, “わ”, “ば”, “か”, “た”, “は”, “さ”, “ら”, “ま”, “や”]

この配列を並び替えてみよう。
※濁点や半濁点がどの位置に来るか想像してから実行してみてください。

  • このエントリーをはてなブックマークに追加

PAGE TOP