Beyond The Limit

はじまりは2001年

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
>>>