nikuyoshiのブログ

記事の内容については個人の見解であり、所属企業の意見を代表するものではありません

みんなのPython Chapter02

変数

  • アルファベット、数字、アンダースコアを組み合わせて変数名を作る
  • はじめの一文字は、アルファベット、またはアンダースコア*1
  • アルファベットの大文字と小文字を区別する
  • 予約語は使えない
  • 変数に対する代入は「=」一つだけ
  • 数値などデータそのものの表記をリテラルと呼ぶ。
  • Pythonでは変数の型宣言がいらない!*2

組み込み型

  • 数値

[例] 10 3.1415 0xFF

  • 文字列

[例] "abc",'string',u"日本語"

  • リスト

[例] [1,2,3] ["python",u"あいう",4]

  • タプル

[例] (1,2,3,4) ("abc",5,"def")

  • 辞書

[例] {'spam':u'スパム','ham':u'ハム',1:'one'}

数値計算

  • 累乗を計算するときは「**」を使う
  • 「++」「--」は使えない
  • 「+=」「-=」は使える

文字列

  • 文字をしまっておくための領域をあらかずめ確保する必要なし
  • 文字列型
    • 数値やアルファベットといったASCII文字を扱うために利用する
  • ユニコード
    • 漢字やひらがななどの文字を含む、より広い範囲の文字を扱うために利用する
  • 文字列を定義するために、ダブルクオーテーションの代わりにシングルクオーテーションを使うことも出来る
  • 長い文字列を定義する時、ダブル(シングル)クオーテーションを3つ重ねて記述出来る
  • 「+」はオブジェクト同士をつなげるという意味がある
  • 「*」はオブジェクトを繰り返すという意味がある
  • 型を揃えるには組み込み関数(ex. int(文字列),str(数値))を使う
  • 文字列の検索と置換
    • 文字列の検索は

文字列.find(検索文字列)

    • 文字列の置き換えは

文字列.replace(検索文字列,置換文字列)

      • replace()メソッドを呼び出しても、もとの変数は変わらない!戻り値を変数に代入しておくこと
>>> digits = digits.replace("23","2233")
>>> digits
'122334'
  • インデックスを使って要素を取り出す
    • インデックスを使って取り出したオブジェクトの型は、1文字だけで構成される文字列
>>> digits = "1234"
>>> digits[2]
'3'
  • ord()関数とchr()関数
>>>ord(digits[2]) #変数の3文字目をキャラクタコードに変換
51
>>>chr(52)        #キャラクタコードの52を文字列に変換
'4'
  • 文字を置き換えようとするとエラーになる
    • 文字列を置き換える場合は、文字列メソッドreplaceなどを使うか、文字列の演算を行い、その結果を変数に代入
>>> digits[2] = "4"

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    digits[2] = "4"
NameError: name 'digits' is not defined

ユニコード文字列

>>> ustr = u"abcあいう"
>>> len(ustr)
6
>>>bytestr = ustr.encode("utf-8")
>>>len(bytestr) #UTF-8の8ビット文字列の長さを調べる
12
  • 日本語を含む文字列を扱う場合は、ユニコードを使ったほうが良い!

リスト

  • リストにはどんなオブジェクトも入れることが出来る

[例] 数値、文字列、リストそのもの

  • 領域を確保したり、増やしたりする必要はない
  • リストの定義
>>> a = [1, 2, 3, 4, 5]
>>> a
[1, 2, 3, 4, 5]
  • インデックスの利用
>>> a[2]  #リストの要素を取り出す
3
>>> a[-1] #リストの最後の要素を取り出す
5
  • スライスによるリストの取り出し
    • 「:」の後ろに指定する数値には、取り出したい要素のインデックスに1を加えた整数を指定する
>>> a[1:3]
[2, 3]
>>> a[3:4]
[4]
>>> a[2:]   #2番目から最後まで
[3, 4, 5]
>>> a[:3]   #最初から3番目まで
[1, 2, 3, 4]
>>>a[2:100] #エラーにならない
[3, 4, 5]
  • リストの足し算
>>> b = a + [100, 101, 102]
>>> b
[1, 2, 3, 4, 5, 100, 101, 102]
  • リストのかけ算
>>> a = [1, 2, 3] * 3
>>> a
[1, 2, 3, 1, 2, 3, 1, 2, 3]
  • 要素の置換え、削除
    • リストの要素を入れ替える
>>> a = [1, 2, 3, 4, 5]
>>> a[1] = 'Two'
>>> a
[1, 'Two', 3, 4, 5]
    • 要素の削除
>>> del a[2]
>>> a
[1, 2, 3, 4]
  • max()関数とmin()関数
>>> oilsupply = [271220, 259429, 259795, 262472]
>>> min(oilsupply)
259429
>>> max(oilsupply)
271220
  • リストのソートと順序の反転
    • 小さい順に並べ替える
>>> gdp = [51317, 50097, 494720, 50125]
>>> gdp.sort()
>>> gdp
[49720, 50097, 50125, 51317]
    • 並び順を逆にする
>>> gdp.reverse()
>>> gdp
[51317, 50125, 50097, 49720]
  • append()メソッド
>>> a = [1, 2, 3, 4, 5]
>>> a.append(100)
>>> a
[1, 2, 3, 4, 5, 100]
>>> a.append([200, 300, 400])
>>> a
[1, 2, 3, 4, 5, 100, [200, 300, 400]]

辞書

  • 辞書の定義
>>> d = {"name":"Guido","nickname":"GvR"}
>>> d
{'nickname':'GvR','name':'Guido'}
  • 要素の取り出しと代入
>>> d['name']
'Guido'
>>>d['name'] = "Guido van Rossum"
  • 要素の追加
>>> d['birthyear'] = 1964
>>> d
{'birthyear': 1964, 'nickname': 'GvR', 'name':'Guido van Rossum'}
  • 要素の削除
>>> del d['nickname']
>>> d
{'birthyear': 1964, 'name'=:'Guido'
  • キーの一覧と確認
    • keys()メソッドとhas_key()メソッド

タプル

  • タプルを定義する
>>> t = (1, 2, 3, 4, 5)
>>> t
(1, 2, 3, 4, 5)
  • タプルを利用する
>>> t[1]
2
>>> t[2:4]
(3,4)
  • タプルでは要素を書き換えることが出来ない!
  • タプルの利点
    • リストと異なり、タプルは辞書のキーとして利用出来る

組み込み型の分類とまとめ

  • コレクション型
シーケンス型 マップ型
文字列、リスト、タプル 辞書
  • 変更可能と変更不可能
変更可能な組み込み型 変更不可能な組み込み型
リスト、辞書 文字列、タプル
  • 組み込み型相互の変換
関数名 説明
list([シーケンス]) リスト以外のシーケンス型をリストに変換
tuple([シーケンス]) タプル以外のシーケンス型をタプルに変換
str([オブジェクト]) オブジェクトを「ふさわしい表記の文字列」に変換

*1:数字から始めることは出来ない

*2:動的型付言語と呼ぶ。PerlRubyも同じ仲間