【Python入門】 リストの操作で多くのデータを処理しよう!

Python

リストの基本操作

Pythonで多くのデータを利用する仕組みに「リスト」があります。リストのappend(), insert(), remove(), list(), copy(), del, []命令の使い方について説明します。

リストの作成と表示 [],print()

リストの基本的な作成方法は「[ ]」の中にデータをカンマで区切って記述して作成します。
作成したリストは値の追加・削除・変更が可能で変更可能なものを「mutable」と呼びます。逆に変更不可能なものを「immutalbe」と呼びます。
リストを表示する場合はprint()関数を使用します。

構文
【リストの作成方法】
リスト名 = [値1,値2,値3,・・・]

【リストの表示方法】
print(リスト名)
#価格のリストを作成
price = [50,198,240,320,480]
#価格のリストを表示
print(price)

実行結果

[50, 198, 240, 320, 480]

[ ]で値を設定してprint()で表示させると、リストが作成されている事が確認できます。

リスト内の個別の値を取得する

作成したリストの各々の値は、price[0], [price[1], price[2] のようにリスト名に「[ ]」を足して、「[ ]」内に添字と呼ばれる数字を指定することで得ることができます。添時はインデックスとも呼ばれ、0から始まります。

構文
【リストの値の指定方法】
リスト名[添字]
#リストの値を個別に表示します。
price = [50,198,240,320,480]
print(price[0])
print(price[1])
print(price[2])
print(price[3])
print(price[4])

実行結果

50
198
240
320
480

リストの要素をインデックスで0、1、2、3、4と指定して、その位置に入っている値を表示させています。

リスト内のデータ数を取得する

リストに多くの値が入っている場合は、リストに幾つの値が入っているかを調べる必要がある場合があります。値の数を調べるにはlen()関数を使用します。

構文
【リストの値の数を取得する方法】
len(リスト名)
#価格リストに幾つの値が入っているか表示します。
price = [50,198,240,320,480]
print(len(price))

実行結果

5

len()関数を使用する事でリスト内のデータ数を取得しています。上記のpriceリストのデータ数は5で、実行結果も5になっている事が確認できます。

リストをfor文で使用する

リストは、繰り返し処理で使用するfor文に組み込むことができます。for文ではリスト内の要素を順番に取り出しします。

#価格を順番に表示します。
price = [50,198,240,320,480]
for p in price:
    print("価格は",p,"円です。")

実行結果

価格は 50 円です。
価格は 198 円です。
価格は 240 円です。
価格は 320 円です。
価格は 480 円です。

for文の繰り返し処理の合計回数を記述する箇所にリストを指定することで、リスト内のデータ数を指定しなくてもデータ数分の処理を実行しています。

リストの編集

リストはmutable(変更可能)なので値の変更・追加・削除ができます。

リストの値の変更

リスト内の値を変更するには、変更したい箇所をインデックスで指定して値を代入します。

#リストの3番目の要素を、240から298に変更します。
price = [50,198,240,320,480]
print("変更前のリストは",price,"です。")
price[2] =298
print("変更後のリストは",price,"です。")

実行結果

変更前のリストは [50, 198, 240, 320, 480] です。
変更後のリストは [50, 198, 298, 320, 480] です。

インデックスで2(3番目の値)を指定することにより、指定箇所の値が変更されている事が確認できます。

リストに値を追加する append()

リストに値を追加するにはappend()を使用します。「( )」内には追加したい値を指定します。append()はリストの最後に値を追加します。

構文
【リストに値を追加する方法】
リスト名.append(値)
#リストの最後に値を追加する。
price = [50,198,240,320,480]
print("追加前のリストは",price,"です。")
price.append(980)
print("追加後のリストは",price,"です。")

実行結果

追加前のリストは [50, 198, 240, 320, 480] です。
追加後のリストは [50, 198, 240, 320, 480, 980] です。 

リストの最後に「980」の値が追加されている事が確認できます。

リストに値を挿入する insert()

リストに値を挿入するにはinsert()を使用します。「( )」内には追加したい値と位置を指定します。

構文
【リストに値を挿入する方法】
リスト名.insert(位置,値)
#リストの途中に値を挿入する。
price = [50,198,240,320,480]
print("挿入前のリストは",price,"です。")
price.insert(3,290)
print("挿入後のリストは",price,"です。")

実行結果

挿入前のリストは [50, 198, 240, 320, 480] です。
挿入後のリストは [50, 198, 240, 290, 320, 480] です。 

インデックスで3(4番目の場所)に新たな値=290が挿入されている事が確認できます。

リストの値を削除

リストの値を削除する方法は、インデックス(添字)を指定する方法と、値を指定する方法があります。

インデックスを指定して削除 del

構文
【インデックスを指定してリストの値を削除】
del リスト名[添字]
#インデックスを指定して、4番目(添字=3)の値を削除します。
price = [50,198,240,320,480]
print("削除前のリストは",price,"です。")
del price[3]
print("削除後のリストは",price,"です。")

実行結果

削除前のリストは [50, 198, 240, 320, 480] です。
削除後のリストは [50, 198, 240, 480] です。

インデックスで3(4番目の値)=320が削除されている事が確認できます。

値を定して削除 remove()

値を指定して削除する場合は、リストの先頭から値と一致するかを検索して、最初に一致したデータを削除します。

構文
【値を指定してリストの値を削除】
リスト名.remove(値)
#値を指定して削除する。
price = [50,198,240,320,480,198]
print("削除前のリストは",price,"です。")
price.remove(198)
print("削除後のリストは",price,"です。")

実行結果

削除前のリストは [50, 198, 240, 320, 480, 198] です。
削除後のリストは [50, 240, 320, 480, 198] です。

値を指定、この場合は198を指定してリストから値が削除されているのが確認できます。最初に一致する値を削除するので、リストの最後にある198は削除されていません。

リスト全体を削除 del

構文
【リスト全体を削除】
del リスト名

del文でリスト名を指定すると、リスト全体を削除します。全体を削除することによりメモリが解放され他の用途に使用でき、プログラムの動作が軽くなります。del文は変数の削除でも使用できます。

削除後にリストを利用しようとしても、すでに存在しないリストなので、エラーが発生します。

#リストを削除してメモリを解放します。
price = [50,198,240,320,480]
print("削除前のリストは",price,"です。")
del price
print("削除後のリストは",price,"です。")

実行結果

削除前のリストは [50, 198, 240, 320, 480] です。
Traceback (most recent call last):
  File "c:\Users\kshi\Documents\Python Kankei\sample01.py", line 4, in <module>
    print("削除後のリストは",price,"です。")
NameError: name 'price' is not defined

リストを削除後にprint()関数で表示しようとしてもエラーが発生するので、リストが削除されている事が確認できます。

リスト代入時の注意

元のリストを代入して利用する時には注意が必要です。
次のプログラムの様ににcolors1をcolors2に代入すると、新しくcolors2のリストが作成されたと思いがちですが、代入操作では元のリストを参照しているだけであり新しいリストは作成されていません。colors2の値を変更してから両方のリストの内容を表示してみると、colors1の内容も変更されているのが確認できます。

#代入後のリストを変更すると、代入元のリストも変更される。
colors1 = ["red","blue","yellow","green"]
print("変更前のcolors1は",colors1)
colors2 = colors1
colors2[0] = "black"
print("変更後のcolors1は",colors1)
print("変更後のcolors2は",colors2)

実行結果

変更前のcolors1は ['red', 'blue', 'yellow', 'green']
変更後のcolors1は ['black', 'blue', 'yellow', 'green']    
変更後のcolors2は ['black', 'blue', 'yellow', 'green']   

colors2にcolors1を代入して、colors2の最初の値を”black”に変更しています。colors2を変更した後にcolors1を確認してみると、colors1の最初の値も”black”に変更されています。これは、リストの代入は新たにリストを作成するのではなく、同じリストを違う名前で参照しているだけを意味します。

新たなリストの作成

元のリストを利用して新たなリストを作成する方法として、list()とcopy()命令があります。

複製してリストを作成 list()

あらかじめ作成済みの、元のリストを利用して、新たなリストを作成(複製)するには list() 命令を使用します。

構文
【list()で新たなリストの作成】
リスト名2 = list(リスト名1)
#元のリストを利用して新たなリストを作成します。
point1 = [10,20,30,40,50]
point2 = list(point1)
point1[2] = 500
print(point1)
print(point2)

実行結果

[10, 20, 500, 40, 50]
[10, 20, 30, 40, 50]  

list()命令で、point1リストを元に、point2リストを新規作成(複製)しています。新たなpoint2リストを作成した後で元のpoint1リストの値を変更しても、point2リストの値が連動して変更される事はありません。新たに作成したリストは完全に独立したリストになります。

複製してリストを作成 copy()

もう一つの方法で、元のリストを利用して新たなリストを作成(複製)するには copy() 命令を使用します。

構文
【copy()で新たなリストの作成】
リスト名2 = リスト名1.copy()
#元のリストを利用して新たなリストを作成します。
point1 = [10,20,30,40,50]
point2 = point1.copy()
point1[2] = 500
print(point1)
print(point2)

実行結果

[10, 20, 500, 40, 50]
[10, 20, 30, 40, 50] 

copy()メソッドで、point1リストを元に、point2リストを新規作成(複製)しています。新たなpoint2リストを作成した後で元のpoint1リストの値を変更しても、point2リストの値が連動して変更される事はありません。新たに作成したリストは完全に独立したリストになります。

空のリストを作成 [],list()

空のリストを作成するには、[] や list() を記述します。

構文
【空のリストの作成】
リスト名1 = []
リスト名2 = list()
#2つの方法で空のリストを作成します。
point1 = []
point2 = list()
print(point1)
print(point2)

実行結果

[]
[]

いずれの方法でも空のリストが作成されている事が確認できます。