1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

【Python入門】list sortでリストの中身を効率的にソートする方法

【Python入門】
Pocket

プログラミングをしていると、リストの中身をソートしたい場面が出てきます。言語によってはfor文などを駆使して、既存のソートアルゴリズムを実現する、というやり方のものがあり、意外と大変です。しかし、Pythonならリストをソートするための関数が用意されているため、簡単にソートすることができます。

今回は、リストの中身をソートする方法を説明します。

sort関数を使ったソート

Pythonでリストをするためのもっとも簡単な方法はsort関数を使うことです。sort関数の構文は以下のようになります。

sort()を使うと、リストの中身が昇順でソートされます。文字列は文字コード順、数値は小さい順にソートされます。sort()でソートした場合は、元のリストの中身が入れ替わります。

実行結果

ソート前:[‘python’, ‘list’, ‘sort’]
ソート後:[‘list’, ‘python’, ‘sort’]

reverse関数を使った逆順ソート

sort関数を使えば、リストを簡単にソートできますが、順番が必ず昇順になります。降順でソートしたいときはreverse関数を使いましょう。reverse関数の構文は以下の通りです。

reverse()を使うと、リストの中身がすべて逆順になります。そのため、sort()を使って昇順にソートした後にreverse()を使うことで、リストを降順にソートすることができます。

実行結果

ソート前:[1, 5, 3, 9, 6, 7, 8]
ソート後(昇順):[1, 3, 5, 6, 7, 8, 9]
ソート後(降順):[9, 8, 7, 6, 5, 3, 1]

sorted関数を使ったソート

sort関数でリストを昇順ソート、さらにreverse関数を使うことで降順ソートが実現できることが分かりました。しかし、この2つの関数を使ったソートの場合は、元のリストの中身が書き換えられます。

ソートをしたけど元に戻しておきたい場合などを考えると、できれば中身は変えずにソート済みのリストを新しく別に作成したい、という場合あります。そんな時はsorted関数が便利です。

sorted関数で昇順ソート

sorted関数は、sort関数と同様にリストをソートする関数です。しかし、sorted関数はソートされたリストを返すので、sort関数とは違って元のソートの中身は変わりません。sorted関数で昇順ソートを行う構文は以下のようになります。

ソートする前のリスト1をsortedに渡すことで、ソートされたリストが返されます。それをリスト2に代入することで、リスト1をソートした新しいリスト2が作られます。元のリストは変更されないので、もしもの時に備えて元のリストをのこしておけるのはいいですね。

実行結果

ソート前:[1, 5, 3, 9, 6, 7, 8]
ソート後:[1, 3, 5, 6, 7, 8, 9]

sorted関数で降順ソート

sorted関数でソートを行うと昇順になりますが、当然降順にソートすることもできます。

sorted関数を使う際に、reverseというオプションをTrueにすることで、降順にソートすることができます。

実行結果

ソート前:[1, 5, 3, 9, 6, 7, 8]
ソート後:[9, 8, 7, 6, 5, 3, 1]

多次元リストのソート

ここまで1次元のリストのソートの方法を説明してきましたが、時には2次元以上の多次元リストをソートしたい場合があると思います。多次元の配列でも1次元と同様にsort(), reverse(), sorted()を使えばソートできます。

しかし、多次元の場合はどの値をキーにしてソートしたかによって結果が変わります。例えば、以下のようなリストをソートするとします。

このlist1は3個の要素を持つリストが3つ集まった2次元配列です。このlist1は、要素となっている各リストの何番目の要素をキーにするかでソートの結果が変わります。

多次元リストを普通にソートすると1番目の要素をキーにしてソートされます。キーにする要素を指定してソートするには、itemgetterを使用します。

itemgetterはoperatorライブラリの関数なので、最初にインポートする必要があります。itemgetter()の引数は、キーにしたい要素の番号を表します。itemgetter(1)の場合は1番目の要素をキーにしてリストをソートします。

itemgetterを使うことで、どの要素をキーにするかを選択することができます。

実行結果

ソート前:[[1, 5, 3], [6, 4, 8], [9, 11, 2]]
ソート後(0番目の要素):[[1, 5, 3], [6, 4, 8], [9, 11, 2]]
ソート後(1番目の要素):[[6, 4, 8], [1, 5, 3], [9, 11, 2]]
ソート後(2番目の要素):[[9, 11, 2], [1, 5, 3], [6, 4, 8]]

おわりに

いかがでしたか。
データの並べ替えは最も基本的な計算処理の一部であり、並べ替えの効率化は計算時間の短縮に大きな影響を及ぼします。
今回の記事でソートの使い方の学習に励まれることをおすすめします。

投稿者:プロスタ編集部

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

おすすめスクール

全国30校舎で展開されるヒューマンアカデミーのWeb講座は修了者数4万人超、講師とカリキュラムの満足度がどちらも9割を超えています。就職や転職に必要なレベルの実務スキルを身に付けられます。

WebCampは、一ヶ月の短期集中でWebデザイン、プログラミングスキルを習得するスクールです。学習効果の高い反転授業(自主学習でインプット、講義でアウトプット)を採用し、年間1000名を輩出しています。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

イチ押しランキング

1リナックスアカデミー

リナックスアカデミー

2システムアーキテクチュアナレッジ

システムアーキテクチュアナレッジ

3WEB塾

WEB塾

メールマガジン

ページ上部へ戻る