Pythonのlist メソッド一覧 操作方法の入門

Pythonのlistについてまとめています。

python list/リスト要素の基本操作

Pythonの配列変数は「リスト」と呼ばれています。リスト名[要素番号]という指定で値にアクセス可能です。

Python 3.6.8 (default, Oct 7 2019, 12:59:55)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> mylist=["a", "b", "c"]
>>> print ( mylist )
['a', 'b', 'c']
>>> print ( mylist[0] )
a
>>> print ( mylist[1] )
b
#リストの3番めは配列の範囲外なので、エラーになる
>>> print ( mylist[3] )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range

Pythonのリストの追加

リストに養素を追加するには、リスト名.appendを使います。

養素は、リストの一番最後に追加されます。

>>> print( mylist )
['a', 'b', 'c']
>>> mylist.append('d')
>>> print( mylist )
['a', 'b', 'c', 'd']

Pythonのリスト要素の更新

リスト養素の値を更新するには、要素番号を指定して値を代入します。

>>> print( mylist )
['a', 'b', 'c', 'd']
>>> mylist[2]='ccc'
>>> print( mylist )
['a', 'b', 'ccc', 'd']

リストの任意の位置に要素を挿入するには、リスト名.insert( 要素番号, 値 ) を実行します。

>>> print( mylist )
['a', 'b', 'c', 'd', 'e']
>>> mylist.insert(3,'ccc')
>>> print( mylist )
['a', 'b', 'c', 'ccc', 'd', 'e']

リストの最後に、別のリストを連結するには、リスト名.extend( リスト名 ) を実行します。

>>> mylist = ['a', 'b', 'c', 'd', 'e']
>>> mylist2 = ['f', 'g', 'h', 'i']
>>> print( mylist )
['a', 'b', 'c', 'd', 'e']
>>> mylist.extend(mylist2)
>>> print( mylist )
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

Pythonのリストの削除

リストの要素を削除するには2つの方法があります。

del リスト名[要素番号]で、指定した位置の要素を削除します。

また、リスト名.remove(値) を実行すると、指定した値の要素を削除します。

>>> print( mylist )
['a', 'b', 'ccc', 'd']
# delは要素番号を指定して要素削除
>>> del mylist[2]
>>> print( mylist )
['a', 'b', 'd']
# removeは要素値を指定して養素削除
>>> mylist.remove('d')
>>> print( mylist )
['a', 'b']

Pythonのリストの範囲指定(スライス)

:(コロン)を使った要素番号指定で、要素番号の範囲指定が可能です。

>>> mylist = ['a', 'b', 'c', 'd', 'e']
>>> print( mylist )
['a', 'b', 'c', 'd', 'e']
#範囲指定 要素番号1~3
>>> print( mylist[1:3] )
['b', 'c']
#範囲指定 要素番号3以前
>>> print( mylist[:3] )
['a', 'b', 'c']
#範囲指定 要素番号2以降
>>> print( mylist[2:] )
['c', 'd', 'e']
#範囲指定 要素番号1~4を2つ飛ばし
>>> print( mylist[1:4:2] )
['b', 'd']
#全要素
>>> print( mylist[:] )
['a', 'b', 'c', 'd', 'e']

Pythonのリストのコピー

リストのコピーは、リスト名1=リスト名2[:]でおこないます。

単純にリスト名1=リスト名2とすると、データの実体は同じものになってしまい、値を書き換えるとコピー元も書き換わってしまいます。

>>> print( mylist )
['a', 'b', 'c', 'd', 'e']
#この記述はコピーにならない(データの実体は同じ)
>>> mylist2 = mylist
>>> print(mylist2)
['a', 'b', 'c', 'd', 'e']
>>> mylist2[1]='bbb'
>>> print( mylist2 )
['a', 'bbb', 'c', 'd', 'e']
#mylist2を更新すると、mylistの内容も書き換わっている
>>> print( mylist )
['a', 'bbb', 'c', 'd', 'e']

こちらの例では、コピー後に要素を書き換えてもコピー元はもとのまま。全要素がまるごと別のリストとしてコピーされます。

>>> mylist = ['a', 'b', 'c', 'd', 'e']
>>> mylist2 = mylist[:]
>>> mylist2[1]='bbb'
>>> print( mylist2 )
['a', 'bbb', 'c', 'd', 'e']
#mylist2を書き換えても、mylistの内容はそのまま
>>> print( mylist )
['a', 'b', 'c', 'd', 'e']

Pythonのリストの内包表記

Pythonのリストを生成する場合に、内包表記という記述方法があります。

$ cat pylist.py
#!/usr/bin/python3

list=[x for x in range(0,10)]

print( list )

初見だと、え?何やってんのコレ?という感じですよね。理屈よりも、そういうもんだと思って覚えてしまう方がいいかも。リストを表す[]の中身に、for文が入っている形です。

関連 Pythonのfor文

実行するとこうなります。

$ ./pylist.py
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2次元配列の場合だと、こう記述します。

$ cat pylist2.py
#!/usr/bin/python3

list=[[x for x in range(0,10)] for y in range(0,3)]

print( list )

実行するとこうなります。

$ ./pylist2.py
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]

この内包表記、コードの見た目がスッキリする以上に、処理が高速化するという効果があります。

処理内容によっては、速度が倍違ってくるということもあるそう。

なんかめんどくさそう…と思っても処理速度が倍違うなら覚える価値ありですね。

Pythonのlist まとめ

まとめ

  • pythonのリストは、追加、修正、削除が可能
  • pythonのリストは:(コロン)によるスライスで範囲指定が可能
  • リストのコピーは[:]指定でおこなう