Pythonの勉強 #1 (「みんなのPython」Chapter 1-1~4)

今回はPythonの勉強。

使用する本

オライリーじゃないです。オライリー本はこの本を読み終えたら買ってみる予定。

みんなのPython

みんなのPython

Capter 1-1

Pythonって凄いんだぜ!ってことが書かれてます。
BitTorrentとかyumってPythonで作られてたんですね。

Capter 1-2

Pythonのインストール方法が書かれています。

Capter 1-3

インタラクティブシェルの説明とか変数についてとかインデントの重要さとかエディタとかについて書かれてます。
終了時の波括弧とか「end」とかないから、プログラムがすっきりしてて見やすいです。

Capter 1-4

組み込みのデータ型
  • 数値
  • 文字列
  • リスト
  • タプル
  • 辞書(ディクショナリ)

リストはPHPとかJavaの配列と同じ。タプルは要素の追加や変更ができないらしい。辞書はPHP連想配列と同じかな。このほかにもbool型とset型があるらしい。set型ってなんのことだろう。

文字列のインデックス

文字列には配列っぽくインデックスが振られてる。たとえば

"abcd"

という文字列があったら、aには0、bには1、などという番号が振られている。

>>> digits = "1234"
>>> digits[2]
'3'

文字列を収める型
  • 文字列(string)型
    • ASCII文字を扱うために利用する
  • ユニコード文字列(unicode string)型
    • 日本語の漢字やひらがななどの文字を扱うために利用する
型キャスト

>>> nstr = "1234"
>>> int(nstr) + 5678 #文字列を数値に変換
6912

  • 文字列を数値に変換…int()
  • 数値を文字列に変換…str()
  • 小数点の付いた文字列を数値(浮動小数点)に変換…float()
文字列の検索・置換

>>> digits = "1234"
>>> digits.find("23")
1
>>> digits.("89")
-1

引数に入れた文字列が見つかったときは先頭からのインデックスを返す。見つからなかったときは-1を返す。

>>> digits.replace("23", "2233") #"23"を"2233"に置換して返す
'122334'
>>> digits
'1234'

replace()メソッドを使用しても、もとの変数の値は変わらない。

ユニコード文字列

文字列定義のクオーテーションの前に「u」を置く。

>>> ustr = u"日本語"
>>> print ustr
日本語

encode()

いろんなエンコードの8ビット文字列に変換できる。

>>> ustr = u"abcあいう"
>>> len(ustr) #ユニコード文字列の長さを調べる
6
>>> bytestr = ustr.encode("utf-8")
>>> len(bytestr) #UTF-8の8ビット文字列の長さを調べる
12

8ビット文字列が収まってる文字列型は1バイトを1文字と数える。UTF-8では「あいう」はそれぞれ3バイトなので、12文字と数える。
よって、インデックスを使って文字列の一部を取り出すなどの際には注意が必要。

リストの定義

>>> a = [1, 2, 3, 4, 5]
>>> a
[1, 2, 3, 4, 5]

インデックスを指定して要素を取り出す

上の例の続き。

>>> a[2]
3
>>> a[-1]
5
>>> a[100]
(要素数を超える数値を与えたため、エラーが表示される)

スライス

同じく上の例の続き。

>>> a[1:3]
[2, 3]
>>> a[3:4]
[4]
>>> a[2:]
[3, 4, 5]
>>> a[:3]
[1, 2, 3]
>>> a[2:100] #エラーにならない
[3, 4, 5]

スライスは文字列やタプルにも使用できる。

リストの要素を削除

del文を使う。

>>> a = [1, 2, 3, 4, 5]
>>> del a[2]
>>> a
[1, 2, 4, 5]

辞書の定義

>>> d = {"name":"Guido", "nickname":"GvR"}
>>> d
{'nickname': 'GvR', 'name': 'Guido'}

キーの並び順はいつも同じとは限らない。

タプルの定義

>>> t = (1, 2, 3, 4, 5)
>>> t
(1, 2, 3, 4, 5)

書き換えができないということ以外はリストと同じ。

組み込み型の相互変換

>>> t = (1, 2, 3, 4, 5)
>>> a = list(t)
>>> a
[1, 2, 3, 4, 5]
>>> t2 = tuple(a)
>>> t2
(1, 2, 3, 4, 5)