3.1 リストとタプル
pythonには文字列以外にタプルとリストの2種類のシーケンス構造があり、0個以上の要素を持つことができる。文字列との違いは要素は型が異なっても良い。
タプルの特徴
タプルはイミュータブルであり、要素を代入すると、それは焼き固められたように書き換えられなくなる。
リストの特徴
ミュータブルであり、要素の削除と挿入ができる。
3.2 リスト
リストは要素を順番に管理したい時、特に順序と内容が変わる場合がある時に向いている。文字列とは異なり、リストはミュータブルのため直接変更できる。
3.2.1 []またはlist()による作成
リストは0個以上の要素をそれぞれカンマで区切り、全体を角かっこで囲む。
>>> empty_list = []
>>> weekdays=['Monday','Tuesday','Wednsday','Thursday','Friday']
>>> another_empty_list=list()#list()関数で空リスト[]が作成できる。
>>> another_empty_list
[]
3.2.2 list()による他のデータ型からのリストへの変換
#文字列を1文字ごとにの文字列リストに変換している。
>>> list('cat')
['c', 'a', 't']
#タプルをリストに変換
>>> a_tuple=('ready','fire','aim')
>>> list(a_tuple)
['ready', 'fire', 'aim']
>>> birthday="1/4/1995"
#split()関数を使えばセパレータによって分割し、リストにする。
>>> birthday.split("/")
['1', '4', '1995']
>>> splitme="a/b//c/d//e"
#セパレータが連続している場合、リスト要素として空文字列ができる。
>>> splitme.split('/')
['a', 'b', '', 'c', 'd', '', 'e']
>>> splitme="a/b//c/d///e"
>>> splitme.split('//')
['a/b', 'c/d', '/e']
3.2.3 [offset]を使った要素の取り出し
文字列と同様にオフセットを指定すればリストから個々の要素を取り出せる。
>>> marxes=["TTTTTT","aaaa","bbbb"]
>>> marxes[0]
'TTTTTT'
>>> marxes[1]
'aaaa'
>>> marxes[2]
'bbbb'
>>> marxes[-1]
'bbbb'
>>> marxes[-2]
'aaaa'
>>> marxes[-3]
'TTTTTT'
#オフセットは対象のリストの中でも有効なものでなければならない。(すでに代入済みの位置である必要がある。)
>>> marxes[-34]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
3.2.4 リストのリスト
>>> small_birds=["a","b"]
>>> extinct_birds=["c","d","e"]
>>> carol_birds=["f","g","h","i"]
>>> all_birds=[small_birds,extinct_birds,"AAA",carol_birds]
>>> all_birds#リストのリスト
[['a', 'b'], ['c', 'd', 'e'], 'AAA', ['f', 'g', 'h', 'i']]
>>> all_birds[0]
['a', 'b']
#[1]はall_birdsの第二要素、[0]はそれの内蔵リストの先頭要素を指す。
>>> all_birds[1][0]
'c'
3.2.5 [offset]による要素の書き換え
ここでもリストオフセット対象リストの中で有効でなければならない。
>>> marxes=["TTTTTT","aaaa","bbbb"]
>>> marxes[2]=["CCCC"]
>>> marxes[2]="CCCC"
>>> marxes
['TTTTTT', 'aaaa', 'CCCC']
3.2.5 オフセットの範囲を指定したスライスによるサブシーケンス取り出し
>>> marxes[0:2]
['TTTTTT', 'aaaa']
#スライスは1以外のステップを指定できる。
>>> marxes[::2]
['TTTTTT', 'CCCC']
>>> marxes[::-2]
['CCCC', 'TTTTTT']
#リストを逆順にする。
>>> marxes[::-1]
['CCCC', 'aaaa', 'TTTTTT']
感想
4章入ったが眠いので今日は程々にした。
参考文献
「Bill Lubanovic著 『入門 Python3』(オライリージャパン発行)」