どうも、ハワイ在住のニホンザル、py-pauです。プログラミング言語pythonの勉強をしております。日々の学習内容やハワイの様子など、備忘録的にまとめていこうと思います。
プログラミング初心者の文系人間なので、おかしなことを書いてい可能性が、控えめに言って120%くらいありますので、変なことを書いてましたら指摘、助言、罵倒、嘲笑をお願いします。
・・・・・・・・・・・・
※なぜかアメブロに画像がアップできません。
アップできるようになってから修正いたします。
仕事がこのところいそがしく、勉強も日が開いてしまいました。
本日ホノルルは大雨。iphone の洪水警報で目が覚めました、観光で来られている方はちょとかわいそうですね。
観光といえば、今、ワイキキの名だたるホテルが相次いでストライキを起こしています。シェラトンワイキキや、ロイヤルハワイアンなどです。僕は観光業ではないので直接は関係ないのですが、はたから見ていてすごく滑稽に思えます。
ホテルを予約してハワイに到着した宿泊客は、ホテルに到着早々ストを起こしている従業員に、「今日ストやってるから泊まれないよ」と言われます。ハワイ旅行ともなると、数か月前から予約している方がほとんどだと思いますし、家族ずれも多いです。急に泊まれないといわれて、どうしろというのでしょうか。
ストをやるにしても、事前にお客さんの対応を終えてからするのが筋ではないのでしょうか。そのほうがお客さんのヘイトがホテルに向かうからそうしているのかもわかりませんが、ハワイ旅行を楽しみにしていた宿泊客に迷惑をかけていい道理はありません。
人間のやることはサルにはわかりません。
・・・・・・・・・・・・・・
さて本題。
リストのメソッドまとめの続きです。
<count (item)>
リストの中でitemと同じ要素がいくつ入っているかを数えます。1つも見つからなければ0を返します。
<reverse(list)>
リストの順番をひっくり返します。a,b,cと並んでたものをc,b,aとします。
新しいリストを生成するのではなく、今あるリストをそのまま書き換えてしまいます。こういうのを「破壊的変更」というそうです。なんか中二を感じますね。
Print(list.reverse())
とすると、Noneを返します。これについては後述。
<sort>
リストを昇順に「破壊的に」並べ替えます。キーを設定しなければ昇順に並べ替えます。
<sorted>
sortとやってることは一緒ですが、こちらは「非破壊的」、つまり新しいリストを生成して、そこに元のリストをソートしたものを代入します。
<clear>
文字通りリストの中を空にする「超破壊的(?)変更」を加えます。
<extend>
リストとリストを合体させます。こちらも破壊的ですので、そうしたくない場合は「静まれ俺の左手!」と叫びながら、プラス演算子を使います。
・・・・・・・・・
<返り値をもつか持たないか>
前述のreverseがNoneを返すことについて、わかりやすい解説があったので、自分なりにまとめてみます。
たとえばnumlistというリストがあったとして、
>>>numlist.reverse()
としても、何も表示されません。これはreverse というメソッドが「返り値を持っていない(Noneを返す)」ということです。
メソッドや組み込み関数には、
・return文を伴い返り値があるもの
・return文がなく、返り値がないもの
の二種類があるようです。後者を「副作用目的の関数」と呼ぶそうです。つまりこのreverseにはreturn文がなく、破壊的に逆順にリストを書き換えるのは副作用なんですね。
新しいメソッドがでてきたら、それが返り値目的のメソッドなのか、副作用目的のメソッドなのかを調べなくてはいけないということですね。
・・・・・・・・・・・
ではまた次回、お読みいただけると幸いです。
ツイッターもやってますので、フォローお願いします。