01 / 07
順番を整えたい
点数を高い順に、名前をあいうえお順に。並べかえは、データを人に見せるときにほぼ必ずやることだよ。
自分で比べて入れかえるコードを書くこともできるけれど、Pythonには最初から道具が用意されている。しかも2つあって、その使い分けがこのレッスンの山場だよ。
くり返しとデータの持ち方
INPUT · スライド
01 / 07
点数を高い順に、名前をあいうえお順に。並べかえは、データを人に見せるときにほぼ必ずやることだよ。
自分で比べて入れかえるコードを書くこともできるけれど、Pythonには最初から道具が用意されている。しかも2つあって、その使い分けがこのレッスンの山場だよ。
02 / 07
1つめは sorted(ソーテッド)。カッコにリストを渡すと、並べかえた新しいリストが返ってくる。
大事なのは、元のリストはそのままだということ。新しく作って返すだけで、渡したほうには手を触れないんだ。
tens = [80, 45, 95]narabi = sorted(tens)print(narabi)print(tens)実行結果
[45, 80, 95] [80, 45, 95]
03 / 07
2つめは sort。点をつけて tens.sort() と呼ぶ。こちらはそのリスト自身を並べかえる。
append と同じ「点をつけて呼ぶ」形だったね。点をつけて呼ぶものは、たいてい自分自身をいじると覚えておくと見分けやすいよ。
tens = [80, 45, 95]tens.sort()print(tens)実行結果
[45, 80, 95]
04 / 07
ここが最大の落とし穴。sort は並べかえるだけで、何も返さない。
返さないので print(tens.sort()) と書くと None(何も無い)が表示されてしまう。同じく tens = tens.sort() と書くと、リストが None に置きかわって消えてしまうよ。
並べかえたリストが欲しいなら、sort() を呼んだあとで元の変数をそのまま使う。
tens = [80, 45, 95]print(tens.sort())実行結果
None
05 / 07
大きい順にしたいときは、カッコの中に reverse=True と書き足す。sorted でも sort でも同じだよ。
この「名前を書いて渡す」書きかたは第3章できちんと扱うから、いまはこの形をそのまま覚えればいい。
tens = [80, 45, 95]print(sorted(tens, reverse=True))実行結果
[95, 80, 45]
06 / 07
中身が文字でも並べかえられる。ひらがなだけなら、だいたいあいうえお順になるよ。
正確には「文字に割りあてられた番号の順」なので、ひらがなとカタカナと漢字が混ざると直感とずれることがある。同じ種類の文字で揃えておくと安心だよ。
kudamonos = ["みかん", "りんご", "ばなな"]print(sorted(kudamonos))実行結果
['ばなな', 'みかん', 'りんご']
07 / 07
narabi = sorted(tens)tens.sort()迷ったら sorted を選ぶといい。元が壊れないぶん安全だからだよ。
次は、並んでいるものの一部分だけを切り出す方法を覚えよう。