麻布十番で働くデータ分析者のブログ

グロースハック、プログラミング、データ分析の色々を発信します

Pythonチュートリアルをやってみる その3

f:id:nimi0370376:20170705203932p:plain

 

今夜もやっていきます。Pythonチュートリアル。前回のPythonチュートリアルは、for文やif文を学んだ気がします。

前回のエントリは下記のリンクからどうぞ。

 

nimi0370376.hatenablog.com

 

キーワード引数みたいな少し新しいものも出てきましたが、まださほど難しくないです。慣れとひたすらに書くことで、自分のものにしていきたいですね。

 

 

 

5章 データ構造

今日は、データ構造をやっていきます。Rubyで言う所の配列あたり。Rubyオブジェクト指向のプログラミングをやって入ればとっつきやすいです。

 

5-1 リストに関するメソッド

まず、リストに関するメソッドを見ていきます。

list.append(x)

 リストの末尾にアイテムを1つ追加する。

 

list.insert(i,x)

 指定された位置にアイテムを挿入する。第一引数は要素のインデックスである。つまり(i-1)の位置にxを挿入することになる。

 

list.remove(x)

値がxである最初のアイテムを削除する。

 

list.pop([i])

 指定された位置のアイテムをリストから削除し、このアイテムを返す。まさにpopのイメージ。

 

list.count(x)

リスト内のxの個数を返す。

 

list.reverse()

リストの要素をインプレースで逆順にする。

 

以上のメソッドを使用すると以下のようになる。

 

f:id:nimi0370376:20170705213513p:plain

 

 

5-2 リスト内包

次に実際にリスト内に数字を入れてみる。普通に入れるのは上記の方法でもできそうなので、条件を加えて入れてみる。

 

今回は、2乗数のリストを生成する。

 

f:id:nimi0370376:20170705213720p:plain

 

squaresという空のリストを用意する。次にxという変数を10まで連続で回す。このときxは2乗数であり、squaresの末尾に加えられる。

 

最後にsquaresを返すと上記のようにできる。

また、下記のように直接[]内に式を書くことも可能である。

 

f:id:nimi0370376:20170705213904p:plain

 

全然難しくない。

 

5-3 del文

>>>del squares

 

でリストごと削除できる。ただし、squaresに数値を入れると復活する。

 

5-4 集合

集合は、リスト内の数字の集合という意味で使われる。具体的には下記のようなことができる。

 

f:id:nimi0370376:20170705214318p:plain

まず、basketの中に色々な果物を入れておく。

printすると何の種類の果物が入ってくれるか教えてくれる。

下の方の'orange' in basketは、それが存在するかを素早く確認するのに役立ってくれる。

 

f:id:nimi0370376:20170705214518p:plain

上記のようなこともできる。aとbに特定の文字列をセットする。

a-b

aの文字列からbの文字を引いたものを返す

 

a | b

aとbを足した文字の種類を返す

 

a & b

aにもbにもある文字だけを返す

 

a ^ b

aだけのものかつbだけのものを返す

 

 

5-5 ディクショナリ

この章で最も大切なのがこのディクショナリである。ディクショナリは、日本語では辞書。辞書のようにそれぞれの文字に意味がつけられるのがこのディクショナリという機能である。rubyで言えばハッシュかな。

 

f:id:nimi0370376:20170705214939p:plain

telには、jack:4098という情報とsape:4139という情報が入っている。

ここにguido:4127を加えている。

 

tel['jack']とすればその数字がでる。またguidoがtelにいるかどうかはinを使えばすぐに教えてくれる。

 

また、数字の部分には計算式も利用できる。下記のように書ける。

 

f:id:nimi0370376:20170705215330p:plain

 

5-6 ディクショナリのループ

ディクショナリは、ループをかけることが可能である。また、itemsメソッドを使えば、キーとそれに対応した値を同時に得ることができる。

 

f:id:nimi0370376:20170705215528p:plain

 

'gallahad':'the pure'をk、'robin':'the brave'をvとしてforでループする。それぞれを返してというと、くっついたものをディクショナリ内から取り出してくれる。