みんPy(改訂版) 読書メモ Chapter 5

Chapter 5 組み込み型を使いこなす

文字列フォーマット

<文字列> % <タプル> または <文字列> % <辞書>でprintfスタイルの文字列のフォーマットが可能。

u"%d回生きた%s" % (10000,"犬")    # => "10000回生きた犬"
u"%(count)d回生きた%(animal)s" % {"count":1000000,"animal":"猫")    # => "1000000回生きた猫"

Python標準ライブラリドキュメント

スライス

スライスのステップ数指定

スライスにはステップ数を指定することもできる。

[1,2,3,4,5,6,7,8,9,][::3]    # => [1,4,7]
スライスによる一部要素の入れ替え
li = [1,2,3,4,5]
li[1:4] = ["two","three","four"]    # => li = [1,"two","three","four",5]
スライス指定での要素の削除
li = [1,2,3,4,5]
del li[2:]    # => [1,2]

アンパック代入

リストやタプルの要素を個別の変数にアンパックして代入できる

one, two = (1, 2)    # one=1 two=2 と同様
three, four = 3, 4    # カンマ区切りの値の列挙はタプルとして扱われる

シーケンス型 (リストやタプル、文字列など)

参照

set

参照 |や&といった演算子を使うこともできる。

辞書

参照

in

シーケンス中に要素が含まれるかをTrue/Falseで返す。文字列中に部分文字列が含まれるかもチェックできる。

シーケンスとループカウンタ

シーケンスをイテレートしながら同時にカウンタも使う場合はenumerate()関数が便利。

for cnt, item in enumerate(seq):
    print cnt, item

zip()関数

2つのシーケンスの要素をタプルにしたリストにして返す。要素数が異なる場合は、少ない方にあわせる。

for name,email in zip(namelist,emaillist):
    print name+":"+email

引数リスト

def foo(a,b,*vals):
    print a, b, vals    # valsは複数要素をとれる。タプルとして関数内で使用できる。

foo(1,2,100,200)        # => 1 2 (100, 200)

引数マップ

def bar(a,b, **args):
    print a,b,args    # argsはマップとなる

bar(1,2,c=100,d=200)  # => 1 2 {'c': 100, 'd': 200}

文字列

  • 8ビット文字列->ユニコード文字列
    • unicode() 関数
    • decode() メソッド
  • unicode文字列->8ビット文字列
    • encode() メソッド
スクリプトファイルのエンコード指定

ファイルの一行目に以下のようなコメントを書く

# coding: <エンコード名>
# coding = <エンコード名>
# -*- coding: <エンコード名> -*-
デフォルトエンコーディング

デフォルトエンコーディング設定は、sysモジュールの setdefaultencoding() 関数を使う。 sitecustomize.pyに環境の設定をかける。