Python学習メモ2
文字列
Pythonのスライスは[start:end:step]
aaa = "ABCDE" >>> aaa 'ABCDE' >>> aaa[:] 特に何も指定しなければ全て返す 'ABCDE' >>> aaa[1:] start、startは指定された位置から始まる 'BCDE' >>> aaa[:3] end、endの場合はend-1の位置までを返すので注意 'ABC' >>> aaa[2:4] start:end、この場合もendはend-1の位置までを返すので注意 'CD' >>> aaa = "ABCDEFGHIJ" >>> aaa 'ABCDEFGHIJ' >>> aaa[0:100:2] start:end:step、この場合はstep文字ごとにstartからend-1までの位置までを返す 'ACEGI' 0,2,4,6,8の位置
その他例
>>> aaa = "0123456789" >>> aaa[3:-3] start:4文字目、end:後ろから3文字目の手前(-1を返す) '3456' >>> aaa[::2] start,endを指定せずにstepのみも指定できる、start::stepや:end:stepも出来る '02468' >>> aaa[::-1] stepに負の数を入れると逆ステップになる '9876543210' >>>
リスト
文字列はイミュータブルなので文字列の文字を書き換えることは出来ないが、リストはミュータブルなので変更ができる list()で他のデータ型をリスト型に変換出来る
>>> aaa 'ABCDEFGHIJK' >>> list(aaa) ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] >>> list(aaa)[0] 'A' >>>
タプルの場合
>>> tuple = ('GO1','GO2','GO3') >>> print(tuple) ('GO1', 'GO2', 'GO3') >>> tuple ('GO1', 'GO2', 'GO3') >>> list(tuple) ['GO1', 'GO2', 'GO3'] >>>
リストをリストにすることもできる、2重構造にも3重構造にもできる
>>> aaa = ['AB','CD','EF'] >>> list(aaa) ['AB', 'CD', 'EF'] >>> aaa ['AB', 'CD', 'EF'] >>> bbb = ['HI','JK'] >>> >>> ccc = [aaa,bbb] >>> ccc [['AB', 'CD', 'EF'], ['HI', 'JK']] >>> >>> ccc[0] cccリストの最初のリスト ['AB', 'CD', 'EF'] >>> >>> ccc[0][0] cccリストの最初のリストの最初のブロック 'AB' >>> ccc[1][1] cccリストの2つめのリストの2つめのブロック 'JK' >>>
リストはミュータブルなのでリストの要素を書き換えることもできる
>>> xyz = ['123','456','789'] >>> xyz[1] = 'ABC' >>> xyz ['123', 'ABC', '789'] >>>
タプルの場合はできない
>>> tuple ('GO1', 'GO2', 'GO3') >>> tuple[0] 'GO1' >>> tuple[0] = 'XY' エラーが出て書き換えられない Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>>