リストには色々便利な機能があるらしい。 色々メモ。
文字列のリスト化
リストには便利な機能があるが、文字列にはそのままでは使えない。
文字列はlist( )
でリスト化することで、以降の機能を使うことができる。
>>> list("abcdefg") ['a', 'b', 'c', 'd', 'e', 'f', 'g'] >>> list("あいうえお") ['あ', 'い', 'う', 'え', 'お']
なお、リスト化した文字列は、''.join( )
で文字列に戻すことができる。
>>> aiueo = list("あいうえお") >>> aiueo ['あ', 'い', 'う', 'え', 'お'] >>> ''.join(aiueo) 'あいうえお'
要素の変更
インデックス指定
インデックス指定し、値を代入することで要素を変更する。
>>> x = [1, 2, 3, 4] >>> x[2] = 9 >>> x [1, 2, 9, 4]
del文
del文
で要素をリストから削除する。
>>> x = [1, 2, 3, 4] >>> del x[2] >>> x [1, 2, 4]
スライス指定
スライス指定で代入すると、指定した部分を別のリストに置き換えることができる。 長さが違うリストを代入しても、そのまま置き換える。
>>> number = [1,2,3,4,5,6,7,8,9,10] >>> number[5:] = [16,17,18,19,20] >>> number [1, 2, 3, 4, 5, 16, 17, 18, 19, 20] >>> number[3:] = [100,200] >>> number [1, 2, 3, 100, 200]
スライスの前後に同じインデックスを指定すると、元の要素を変更することなく、要素を挿入することができる。
>>> number = [1,2,3,4,5] >>> number[2:2] = [10,20] >>> number [1, 2, 10, 20, 3, 4, 5]
スライス指定した箇所に空のリストを代入すると、指定箇所を削除したものと同じ結果になる。
>>> number = [1,2,3,4,5,6,7,8,9,10] >>> number[3:6] = [] >>> number [1, 2, 3, 7, 8, 9, 10]
>>> number = [1,2,3,4,5,6,7,8,9,10] >>> del number[3:6] >>> number [1, 2, 3, 7, 8, 9, 10]
ステップ長を指定し、該当箇所と同じ長さのリストを代入すると、1要素ずつ置き換えることができる。
>>> number = [1,2,3,4,5,6,7,8,9,10] >>> number[::3] = ['a','b','c','d'] >>> number ['a', 2, 3, 'b', 5, 6, 'c', 8, 9, 'd']
要素が無い場合
要素が無い場所へ代入しようとするとエラーになる。どうしても代入したい場合は、先に場所を作ってから。
>>> x = [1,2,3] >>> x[10] = 5 Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list assignment index out of range >>> x = x + [None]*10 >>> x[10] = 5 >>> x [1, 2, 3, None, None, None, None, None, None, None, 5, None, None]