くり返しとデータの持ち方

INPUT · スライド

並べかえる

01 / 07

順番を整えたい

点数を高い順に、名前をあいうえお順に。並べかえは、データを人に見せるときにほぼ必ずやることだよ。

自分で比べて入れかえるコードを書くこともできるけれど、Pythonには最初から道具が用意されている。しかも2つあって、その使い分けがこのレッスンの山場だよ。

02 / 07

sorted は新しいリストを返す

1つめは sorted(ソーテッド)。カッコにリストを渡すと、並べかえた新しいリストが返ってくる。

大事なのは、元のリストはそのままだということ。新しく作って返すだけで、渡したほうには手を触れないんだ。

tens = [80, 45, 95]narabi = sorted(tens)print(narabi)print(tens)

実行結果

[45, 80, 95]
[80, 45, 95]

03 / 07

sort は元を変える

2つめは sort。点をつけて tens.sort() と呼ぶ。こちらはそのリスト自身を並べかえる。

append と同じ「点をつけて呼ぶ」形だったね。点をつけて呼ぶものは、たいてい自分自身をいじると覚えておくと見分けやすいよ。

tens = [80, 45, 95]tens.sort()print(tens)

実行結果

[45, 80, 95]

04 / 07

sort は何も返さない

ここが最大の落とし穴。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 を選ぶといい。元が壊れないぶん安全だからだよ。

次は、並んでいるものの一部分だけを切り出す方法を覚えよう。