この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。 hirocom777.hatenadiary.org 前回は、反復処理について学びました。条件を満たす間、同じ処理を繰り返し実行する処理です。
今回はリストについて学んでいきたいと思います。
リストとは
リストとは、Pythonが標準でサポートしているオブジェクトの1つです。Pythonではデータのことを「オブジェクト」と呼ぶんでしたね。リストは複数の値をまとめて管理できます。以下のように記述します。
[値1, 値2, …]
それぞれの値は任意のデータ型のオブジェクトをセットできます。リストはシーケンスなオブジェクトです。文字列型と同じようにインデックスを使って個々の要素を参照、修正できます。
l_1 = ['A','B','C','D'] print(l_1[0]) # 'A'を返す print(l_1[1]) # 'B'を返す print(l_1[-1]) # 'D'を返す l_1[0] = 'X' print(l_1) # ['A', 'X', 'C', 'D']を返す
また、スライスで一部を切り出すこともできます。切り出した結果はリスト型のオブジェクトになります。
l_1 = ['A','B','C','D'] print(l_1[1:3]) # ['B', 'C']を返す
また、リストはイテラブルなオブジェクトです。for文を使って要素を順番に取り出せます。
for char in ['A','B','C','D']: print(char, end=' ') # A B C D と表示する
リストどうしは、算術演算子の「+」を使って連結ができます。これも文字列型と同じですね。
l_1 = ['A','B'] l_2 = ['C','D'] print(l_1 + l_2) #['A','B','C','D']を返す
リスト以外を結合したいのであれば、list関数で文字列型に型変換(キャスト)する必要があります。
print(['A','B','C'] + list('D')) #['A','B','C','D']を返す print(['A','B','C'] + 'D') #エラーとなる
要素の有無の確認も文字列と同じで、in演算子、not in演算子を使います。
print('A' in ['A','B','C'] ) # Trueを返す print('E' in ['A','B','C'] ) # Falseを返す print('A' not in ['A','B','C'] ) # Falseを返す print('E' not in ['A','B','C'] ) # Trueを返す
2次元リスト
前述の通り、リストには任意のデータ型のオブジェクトをセットできます。つまり、リスト型のオブジェクトをセットすることも可能です。リストを要素としたリストを2次元リストと呼びます。
2次元リストでリスト内リストを参照するには、インデックスを使用して指定します。リスト内リストの要素を指定するには、インデックスで指定したリスト内リストに、さらにインデックスを付けて指定します。
lists = [[10, 30, 20, 40], [11, 31, 21], [12]] print(lists[0]) # [10, 30, 20, 40]を返す print(lists[1][2]) # 21を返す
for文を2重にネストすれば、2次元リスト内の各要素についても参照できます。
for row in [[10, 20], [11, 31, 21], [12]]: for val in row: print(val,end=' ') # 10 20 11 31 21 12 を表示する
2次元リストは、データベースのテーブルを扱ったりする際にも使えますね。3次元以上のリストも作成できるのですが、複雑になりすぎるのでおススメはしません。
配列
この様に、Pythonではまとまったデータを扱う場合にリストを使うことが多いです。しかし他のプログラム言語では、配列というものを使うことが多いです。どうしてPythonではリストを使うのでしょうか?
実をいうとPythonにも配列というものがあるのですが、少しばかりニュアンスが違うのです。Pythonで配列を使う場合には専用のモジュールをインポートする必要があります。使い方はリストとほぼ同じなのですが、以下の違いがあります。
異なるデータ型を一緒にできない
リストでは、異なるデータ型の要素がリスト内に混在できたのですが、配列では同じデータ型のみ設定できます。最初に配列を定義する際にデータ型を指定します。多次元には使用できない
リストの様に多次元での使用はできません。
データ型が決まっているのでリストよりも処理は速いようです。でも多次元で使えない、インポートが必要など使い勝手は今1つですね。普段はリストで十分のようです。
次回もリスト
いかがでしょうか。リストをうまく使えるようになることがPythonを使いこなすコツの1つなのかも知れません。次回も引き続きリストを学んでいこうと思います。お楽しみに!!