リスト_1(Python_06)

この連載では、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つなのかも知れません。次回も引き続きリストを学んでいこうと思います。お楽しみに!!

hirocom777.hatenadiary.org

Python再学習のまとめはこちら!!