さつまろぐ

CAEとかプログラムとか、出来たことの記録など、誰かのお役に立てれば幸い。

Pythonで遊ぶ リストの操作1

リストには色々便利な機能があるらしい。 色々メモ。

文字列のリスト化

リストには便利な機能があるが、文字列にはそのままでは使えない。 文字列は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]
広告