Pythonチュートリアル(その5)
5章 データ構造
・リストについての補足
リストオブジェクトのメソッド
list.append(x) ⇒ リストの松木にアイテムを1つ追加する
list.xtend(iterable) ⇒ 末尾に反復可能体 iterable の全アイテムを追加
list.insert(i, x) ⇒ 指定された位置にアイテムを挿入、第1引数は要素のインデックス、挿入はこの要素の前に行われる
list/removed() ⇒ 値がxに等しい最初のアイテムを削除、そのようなアイテムがない場合はValueErrorを創出
list.pop(i) ⇒ 指定された位置にアイテムをリストから削除し、このアイテムを返す
インデックスが指定されていない場合は、リストの最後のアイテムを指定したことになる
list.clear() ⇒ リストからすべてのアイテムを削除
list.index(x[,start[,end]])⇒ 値がxに等しい最初のアイテムのインデックス(()始まりを)を返す
そのようなアイテムがない場合はValueErrorを送出
オプション引数は、スライス表現で、検索の対象を指定
list.count(x) ⇒ リスト中のxの個数を返す
list.sort(key=None,reverse=false)⇒ リストの要素をインプレース(コピーを取らずにリストオブジェクトを直接)、ソートする
list.reverse() ⇒ リストの要素をインプレースで逆順にする
list.copy() ⇒ リストのシャローコピー(浅いコピー)を返す
・リストをスタックとして使う
スタック:後入れ先出し(last-in, first-out)
append()、pop()を使用
・キューの実装
キュー:先入れ先出し(first-in, first-out)
collections.dequeを使用
from collections import deque
queue = deque([“Eric”, “John”, “Michel”]
queue.append(“Terry”)
queue.append(“Graham”)
queue.popleft() ⇒ ’Eric’
queue.popleft() ⇒ ’John’
deque ⇒ deque([“Michel’, ‘Terry’, ‘Greharn’])
・リスト内包
リストを生成する簡潔な方法
ex. squares = [x**2 for x in range(10)]
↑等価
squares = list(map(lambda x: x**2, range(10)))
ex. [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]
↓
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
・入れ子のリスト内包
ex.
matrix = [
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
list(zip(*matrix))
↓
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
・del文
リストのアイテムをインデックスで指定して削除
ex. del a(0)
del a[2:4]
del a #丸ごと削除
・タプルとシーケンス
カンマで区切られた値からなる
()で子噛まれるが、入力時は、()はあってもなくてもよい
タプルは不変体(immutable)である
アイテム数が0のタプル ()
アイテム数が1のタプル 一つの値の後ろにカンマを付ける
t = 12345, 54321, ‘hello!’ #タプル・パッキング(タプル梱包)
x, y, z = t #シーケンス・案パッキング(開梱)
・集合(set)
重複しない要素を順不同で集めたもの
・ディクショナリ
「キー:値」のペアの集合
中カッコ{}で囲む #波括弧
キーによるインデックスがついている
キーの唯一性を条件とする
参考にした書籍
タイトル:Pythontチュートリアル 第4版
著者:Cuido van Rossum
訳者:鴨澤 眞夫
発行所:株式会社 オイラリー・ジャパン
以上