Python学習16日目のマスターU(@Udemy11)です。
昨日は、リストのメソッドから文字列のメソッドを思い出して、今日はさらにリストのメソッドを追加で学習していますが、いまのところ、メソッドが多すぎて、サラッと講座を受講するだけでは、なかなか記憶に留まりません。
やはり、実践的なプログラムを書いてはじめて具体的な使い方がわかって、自分のものになっていくのかもしれませんね。
それでは今日もリストのメソッドを学習します。
記事の内容は、酒井潤さんの講座を参考にさせていただき、学習した内容を紹介しています。
Pythonをひととおり学習したい人にはピッタリの講座で、値段も専門書1冊の値段よりも安く受講できるので、超おすすめの講座です。
昨日の復習
昨日は、文字列に戻って、文字列のメソッドを学習しました。
>>> a = 'My name is Mike. Hi Mike.'
>>> is_start = a.startswith('My')
>>> is_start
True
>>> is_start = a.startswith('n')
>>> is_start
False
>>> a.find('Mike')
11
>>> a.rfind('Mike')
20
>>> a.count('i')
4
>>> a.title()
'My Name Is Mike. Hi Mike.
>>> a.capitalise()
'My name is mike. hi mike.'
>>> a.upper()
'MY NAME IS MIKE. HI MIKE.'
>>> a.lower()
'my name is mike. hi mike.'
>>> a.replace('Mike', 'Joe')
'My name is Joe. Hi Joe.'
対話型のシェルの表示で書くと出力結果も表示されるので、すごく長くなりましたが、だいたいこんな感じですね。
大文字にしたり、小文字にしたり、単語を入れ替えたりしました。
学習したことを思い出しながら、コードをタイピングをして、さらに確認のため、きちんとPythonで動きを確認することで、かなり理解度が進んでいく気がします。
それでは、本題のリストのメソッドの続きをやっていきます。
index()とcount()とsort()とreverse()
リストの値のindexの位置を求めるメソッドがindexで、指定した値が最初に登場するindexの値を返します。
検索する値と検索し始めるindexの位置を指定して検索することもできます。
>>> r = [1, 2, 3, 4, 5, 1, 2, 3, 3]
>>> r.index(3)
2
>>> r.index(3, 3)
7
最初の頃は、indexの位置が0から始まることにこんがらがってしまいましたが、【,(カンマ)】に注目することで、ようやくなれてきたような気がします。
>>> r.sort()
>>> r
[1, 1, 2, 2, 3, 3, 3, 4, 5]
>>> r.sort(reverse=True)
>>> r
[5, 4, 3, 3, 3, 2, 2, 1, 1]
>>> r.reverse()
>>> r
[1, 1, 2, 2, 3, 3, 3, 4, 5]
sort()は、リストを昇順に並べ替えるメソッドで、文字列ならメソッドを入力したあとすぐに出力されますが、別に出力しないと結果が表示されません。
降順にソートするには、parenthesesの丸括弧の中にオプションのreverseを指定するか、reverseメソッドを使って並び替えます。
split()とjoin()
splitは、文字列の中の指定した値(半角スペースなど)の位置でリストに切り分けてくれます。
対して、joinは、リストを指定する値(半角スペースなど)でつなげて文字列にします。
>>> a = 'My name is Mike. Hi Mike.'
>>> a.split(' ')
['My', 'name', 'is', 'Mike.', 'Hi', 'Mike.']
>>> to_split = a.split()
>>> x = ' '.joint (to_split)
>>> x
'My name is Mike. Hi Mike.'
split()に変数aの中に存在しない値(今回なら#など)を指定すれば、ただ単にリストに一つの’My name is Mike. Hi Mike.’が入ったリストになります。
()に値を指定しないときは、普通に半角スペースを指定したときと同じ位置で切り分けられたリストになったので、このへんはPythonが変数宣言をする必要のないのと同じで、自動的に半角スペースを判断をしてくれているようです。
ちなみにこの見出しのコード画像の下の方に、print出力している4つのメソッドがありますが、酒井さんの講座ではそれぞれのメソッドを変数に代入したあとで変数を出力していました。
そこで、直接print出力したらどうなるんだろうと思って試してみたところ、次のように出力されていました。
2
None
['My', 'name', 'is', 'Mike.']
'My,,name,,is,,Mike.'
sort()は直接print出力できないようで、Noneが返されていましたが、他のメソッドは、変数に代入しなくても同じように出力されていました。
継続は力なり
ほんと、継続することって重要ですよね。
まだ2週間ちょっとしか継続できていませんが、かなりコード入力になれてきました。
このエントリーを記事にしていて気づいたのですが、対話型シェルでメソッドを入力してすぐに結果が表示される文字列の場合、変数の値は変更されていません。
一方で、すぐに出力されずにもう一度変数を指定して出力しなければならない場合は、もともとの変数の値が変更されていました。
例1(変数の値が変更されないパターン)
>>> a = 'My name is Mike.'
>>> a.split(' ')
['My', 'name', 'is', 'Mike.'] ←ここで変数aの値は変更されていない
>>> a
'My name is Mike.' ←変数aは元のまま
例2(変数の値が変更されるパターン)
>>> r = [1, 5, 3, 4, 2]
>>> r.sort() ←この時点で変数rはソートされたリストになっている
>>> r
[1, 2, 3, 4, 5]
あたりまえだろって言われちゃいそうなんですけど、こんな小さな当たり前に気づいたときにちょっとうれしくなっちゃいます。
こんな小さな気づきを積み重ねていこうと思います。
ではでは、Good Python!