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, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12]
]
[[row[i] for row in matrix] for i in range(4)]
     ↓
[(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
訳者:鴨澤 眞夫
発行所:株式会社 オイラリー・ジャパン

以上

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください