型についてのあれこれ(4) - シーケンス型の操作
【 目次 】
文字列, タプル, リストなどのシーケンス型に共通する操作について述べる事にする。
添字表記 (インデクス表記)とスライス表記
- 3. 形式ばらない Python の紹介 — Python 2.7ja1 documentation
文字列は添字表記 (インデクス表記) することができます; C 言語と同じく、文字列の最初の文字の添字 (インデクス) は 0 となります。
...
部分文字列を スライス表記: コロンで区切られた二つのインデクスで指定することができます。
スライスのインデクスには便利なデフォルト値があります; 最初のインデクスを省略すると、0 と見なされます。第 2 のインデクスを省略すると、スライスしようとする文字列のサイズとみなされます。
...
スライス表記に行儀の悪いインデクス指定をしても、値はたしなみよく処理されます: インデクスが大きすぎる場合は文字列のサイズと置き換えられます。スライスの下境界 (文字列の左端) よりも小さいインデクス値を上境界 (文字列の右端) に指定すると、空文字列が返されます。
ンデクスを負の数にして、右から数えることもできます。
list1[-1] は最後の要素、list1[-2] は最後から2番目の要素
変更可能なシーケンス型の操作
len関数
len関数は シーケンス型 (文字列、タプル、またはリスト) か、辞書の要素数(文字列の場合は文字長)を返す。
オブジェクト指向言語であるのにlengthメソッドでは無くなぜ関数なの,ダサいと思ってしまうのは私だけ。
オブジェクト信者の私には賛成できないが、こんな意見もある。
「__len__ に対するインタフェースは len() という組み込み関数」という解釈なの。
del文
del文はリストや辞書の要素等を削除するために使う事ができる。
文字列やタプルは変更不能なのでdel文は使えない。
lst=[1,2,3] del lst[0] print lst dct={"aaa" : "xxx", "bbb" : "yyy", "ccc" : "zzz"} del dct["aaa"] print dct
map, reduce, filter 関数
pythonにはシーケンス型の要素をまとめて処理できる便利な関数map,reduce,filterが用意されている。
- 5.1.3. 関数型のプログラミングツール
- map, reduce, filterによるシーケンス操作 ? Python Snippets
map: すべての要素に処理を行う
filter: 条件に一致する要素のみ抽出する
reduce: 全部まとめて1つに
map関数,reduce関数,filter関数の例については以下を参照。