リストとタプル
リスト
リストでは複数の値を順序をつけて保持することができます。
Python でのリスト型はコンマ区切りの値 (要素) の並びを角括弧で囲んだものとして表現されます。
リストは通常は同じ型の要素を持ちますが、異なる型の要素を含めても問題ありません。
code: python
>> a
>> a
空のリストを作りたいときは次のように記述します。
code: python
>> a=[]
>> type(a)
<class 'list'>
>> b=list()
>> type(b)
<class 'list'>
リストはインデックスやスライスや連結といった操作が行えます。
インデックス は特定の位置にあるリストを返すことができます。
ただし、インデックスが大きすぎるとエラーになります。
code: python
>> a
1
34
8
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
スライス はリストの特定の範囲をコロン記号の前後の数字で表現して、その範囲にあるリストを返すことができます。
code:python
リストの連結
+ 記号で連結することで2つのリストを連結して新しいリストを作成することができます。
code:python
>> b
code: python
>> a
リストへの挿入と追加
リストのある特定の場所に要素を挿入したり、リストに要素を追加する場合はメソッドを呼んで処理します。
メソッドというのはオブジェクトが持っている関数で特定の用途を処理するために用意されています。 組み込み関数 dir() にオブジェクトを与えるとそのメソッドを知ることができます。
code: python
>> dir(a)
'__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort' ここで、insert と append があるのがわかります。
組み込み関数 help() で使いかたを知ることができます。
code: python
>> help(a.insert)
Help on built-in function insert:
insert(index, object, /) method of builtins.list instance
Insert object before index.
>> help(a.append)
Help on built-in function append:
append(object, /) method of builtins.list instance
Append object to the end of the list.
リストオブジェクトの insert() と append() メソッドは次のように使います。
code: python
>> a
>> a.insert(1, 12) # a の1番目の位置に12を挿入
>> a
>> a.append(55) # a の末尾に55を追加
>> a
リストの連結でプラス記号(+) を使いましたが、Pythonがリストオブジェクトの __add__() メソッドで処理しています。
code: python
>> a
タプル
タプルはリストを不変型にしたものです。
code: python
>> a=(1, 'two', 3)
>> a
(1, 'two', 3)
丸括弧を書かなくてもよいのですが、タプルであることを明確にするためにできるだけ書くようにしましょう。
タプルはリストとよく似ていますが、不変型 (immutable) であることが大きな違いです。また複数の型の要素を入れる場合によく使われます。 リストと異なって不変型なので定数的な値を持つリストが欲しい時によく使います。また次に紹介する辞書を使用する時にキーとして使用することもできます。
リストやタプルのパックとアンパック
a=(1, 'two', 3.14) の記述をタプルをパックするといいます。
逆の操作はアンパックといいタプルの要素を変数に代入するようなときに使われます。
等号( = )の左辺に列挙されている変数が、右辺のタプルの長さと同じ数だけないとエラーになることに注意してください。
code: python
>> point=(100, 200, 300)
>> point
(100, 200, 300)
>> x, y, z = point
>> x
100
>> y
200
>> z
300
>> x, y = point
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>> x, y, z, a = point
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 4, got 3)