Python(Python3)で多数の値をまとめて使いたいときや他言語における配列のようなものを使いたいときがあると思います。そのような場合にPythonでは複数のデータを管理できるデータ構造が多数用意されています。その中でも今回は、インデックス番号でデータを管理できるリスト(list)について解説します。Pythonのデータ構造(list、tuple、dict、set)の比較記事も作成したので、それぞれの特徴が知りたい方はぜひそちらをご覧ください。
listの宣言
listは次のように宣言(初期化)出来ます。初期化すると同時にデータを代入することも可能です。入力するデータ同士はカンマ(,)で区切ります。また、別々の型の要素でも1つのlistで扱えます。
#リスト名=[]で初期化 list1=[] #データ同士は「,」で区切る list2=['a','b','c','d','e'] #別々の型でも大丈夫 list3=['Tokyo',23]
listの要素の取り出し方
listの要素を取り出したいときは0から始まるインデックスを指定します。ちなみに、負の値を指定すると、後ろからn番目の要素を取り出すことが出来ます。
list1=['a','b','c','d",'e'] print(list1[0]) print(list1[4]) print(list1[-1])
実行結果
a e e
インデックスは0から始まるため、要素数がnのとき最終インデックスがn-1になることに注意すると、
list[n-1] list[-1]
は等価になります。
listのインデックスを取得
listのインデックスはindexメソッドもしくはリスト内包表記とenumerate関数を使用することで取得できます。
indexメソッドを使用する方法
リスト名.index(検索したい文字列)
とすることで、listのなかで最初にマッチする部分のインデックスを返します。マッチする要素が無かった場合はエラーとなってしまうので注意しましょう。
list1=['a','b','c','a','b','c'] print(list1.index('b'))
実行結果
1
リスト内包表記とenumerate関数を使用する方法
[i for i,k in enumerate(リスト名) if k == 検索したい要素]
とすることで、マッチする部分のインデックスをリストで返します。マッチする部分がなかった場合でも、空のリストを返します。リスト内包表記については別の記事で詳しく解説する予定です。
list1=['a','b','c','a','b','c'] print([i for i,k in enumerate(list1) if k=='a']) print([i for i,k in enumerate(list1) if k=='x'])
実行結果
[0, 3] []
マッチする要素が複数ある場合には、全てのマッチ部分のリストになっています。逆に、マッチする部分がない場合は、空のリストが返っています。
listの要素数を取得
listの要素数はPython3の組み込み関数lenで取得することが出来ます。
list1=['a','b','c','d','e'] print(len(list1))
実行結果
5
ここで、list1のインデックスは0から4ですが、要素数は5になることに注意してください。
listの要素の追加と削除
listの要素の追加・削除については「Pythonでのlistの要素の追加・削除」で詳しく説明しているのでそちらをご覧ください.
listの演算
Pythonではlist同士で一部の演算を使用することが出来ます。和算(+)と積算(*)について確認してみましょう。
list1=['a','b','c'] list2=['d','e','f'] list1+=list2 print(list1) list1*=2 print(list1)
実行結果
['a', 'b', 'c', 'd', 'e', 'f'] ['a', 'b', 'c', 'd', 'e', 'f', 'a', 'b', 'c', 'd', 'e', 'f']
listにおける「+」はlistを後ろにつなげる操作を示します。list1にlist2をつなげたことで、最初に出力されるlist1は"a"から"f"のアルファベットを要素に持つlistとなります。また、listにおける「*」は同じlistを末尾にn個つなげる操作を示します。上の例で
list1*=2
となっている箇所の2の部分を任意の整数nに変えることで、listをn回だけつなげたlistとなります。
この記事のまとめ
今回はPythonのlistについて解説しました。listを用いることで複数のデータを簡単に扱えるようになります。この記事の要点を復習しましょう。
- 多数の変数をまとめて扱いたいときはlist
- listの要素の取り出しはlist[n]
- listでは「+」や「*」が使用できる
Pythonで配列を活用してしましょう!