07. リスト(List)

Python リスト(配列)の追加・削除方法の徹底解説(+スライス、要素数取得、検索、range、inなど)

更新日:

リストは他のプログラミング言語における配列に似たもので、文字列、整数、論理などの複数の要素を格納したものです。
 
リストは、 [ ] 括弧で囲んだ中に数値や文字列などの各要素をカンマ ','で区切って記述します。

list = ["abc", 6, True]

リストの特徴は次のものになります。

  • いくつもの数値を、ひとつにまとめて格納する事ができます。
  • 文字列も数値と同様に、ひとつにまとめて格納する事ができます。
  • 数値、文字列も同様に、ひとつにまとめて格納する事ができます。
  • また格納した各要素の変更も可能です。
  • リストから格納した要素を取得するには、インデックスを指定して取得します。

 

著書紹介(清水 義孝)

好評発売中!!

リストへのデータ格納

リストへのデータの格納について、いくつか例を見てみましょう。

例1 リストlist1へ数値1、2、3を格納し、リストに格納されたものを確認すると、結果[1, 2, 3]が表示され、正しく数値が格納できていることがわかります。

In [1]: list1 = [1, 2, 3]
...: list1
Out[1]: [1, 2, 3]

 

例2 リストlist2へ文字列'Hello'、'Good morning'、'Good afternoon'を格納し、リストに格納されたものを確認すると、結果['Hello', 'Good morning', 'Good afternoon']が表示され、正しく文字列が格納できていることがわかります。

In [2]: list2 = ['Hello', 'Good morning', 'Good afternoon']
...: list2
Out[2]: ['Hello', 'Good morning', 'Good afternoon']

 

例3 リストlist3へ数値と文字列の混合'TV'、'売上'、48000を格納し、リストに格納されたものを確認すると、結果['TV', '売上', 48000]が表示され、正しく文字列と数値が格納できていることがわかります。

In [3]: list3 = ['TV', '売上', 48000]
...: list3
Out[3]: ['TV', '売上', 48000]

 

著書紹介(清水 義孝)

好評発売中!!

リストのインデックス

リストへは各要素が順番に格納されているので、リストから各要素を取得するには、インデックス(要素の順番)を指定します。

インデックスは0から始まります。また範囲を指定することもできます。

 

例1 インデックスは0から始まります。以下のようにリストに格納した最初の要素を取得するには、0を指定して下さい。インデックスは[ ] 括弧に数値を入れて指定します。リストlist1の最初の要素10を取得するには、list1[0]と記述します。

In [1]: list1 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list1[0]
Out[1]: 10

 

例2 インデックスは0から始まりますので、リストlist2の4番目の要素40を指定するには、次のようにインデックスに3を指定します。

In [2]: list2 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list2[3]
Out[2]: 40

 

例3 インデックスは後ろからも指定することもできます。その場合は、最後から順に-1、-2、-3と指定していきます。以下ではリストlist3でインデックス-1を指定することにより、最後の値100を取得しています。

In [3]: list3 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list3[-1]
Out[3]: 100

 

 

著書紹介(清水 義孝)

好評発売中!!

リストに対するスライシングの指定方法

インデックスは、開始値、終了値を:(コロン)で区切って、範囲指定することもできます。これをスライシングと言います。

スライシングの基本的な指定方法は次のようになります。

[開始値:終了値]

範囲には終了値に指定された値は含まれず、終了値-1までになります。

また開始値、終了値を省略することができ、開始値が省略された場合は0番目からの指定となり、終了値が省略された場合は最後までの指定になります。

 

例1 リストlist3の3番目の要素30から5番目の50までを取得するには、次のようにインデックスに2:5を指定します。ここでは、終了値に指定されたインデックス5の値60は含まれません。

In [4]: list4 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list4[2:5]
Out[4]: [30, 40, 50]

 

例2 インデックスの範囲の開始値が省略されると0番目からの指定になります。

In [5]: list5 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list5[:5]
Out[5]: [10, 20, 30, 40, 50]

 

例3 インデックスの範囲の終了値が省略されると最後までの指定になります。

In [6]: list6 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list6[4:]
Out[6]: [50, 60, 70, 80, 90, 100]

 

例4 さらにインデックスは後ろからも範囲で指定することもできます。以下ではリストlist7でインデックス-5から-1を指定することにより、最後のから5番目の値60から最後の値100までを取得しています。

In [7]: list7 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list7[-5:-1]
Out[7]: [60, 70, 80, 90]

 

またスライシングでは、次のようにステップ数を指定することにより、何個の要素毎に取得するかを指定することができます。

[開始値:終了値:ステップ数]

 

次の例では、2番目から9番目までの範囲の要素から2個おきに取得するには、ステップ数に2を指定しています。

In [8]: list8 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list8[1:9:2]
Out: [20, 40, 60, 80]

 

リストへ格納した要素の変更

リストは一度作成した後に各要素を変更することができます。変更するには、インデックスを指定して取得した要素に対して新しい要素を代入します。

例えば、リストlist1に格納された10から100までの値の内10を1に変更するには、インデックスで10を指定し、1を代入します。

In [1]: list1 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list1[0] = 1
...: list1
Out[1]: [1, 20, 30, 40, 50, 60, 70, 80, 90, 100]

 

 

著書紹介(清水 義孝)

好評発売中!!

リストへの新しい要素の追加

appendでリストへ新しい要素を追加できます。appendの引数には、追加したい要素の値を記述します。

例えば、リストlist1に対して整数110を追加するには、appendの引数に110を代入します。

In [1]: list1 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list1.append(110)
...: list1
Out[1]: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]

 

リストへ格納した要素の削除

リストに格納された要素の削除はremoveを利用します。removeの引数には、削除したい要素の値を記述します。但し、リスト内に存在しない値を指定するとエラーになりますので注意してください。

例えば、リストlist1に格納された10から100までの値の内、20を削除するには、removeの引数に20を代入します。

In [1]: list1 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: list1.remove(20)
...: list1
Out[1]: [10, 30, 40, 50, 60, 70, 80, 90, 100, 110]

 

リストへ格納した要素数の取得

リストに格納されている要素数はlenを利用して取得することができます。

例えば、10から100までの10個の要素を格納したリストlist1について、lenを用いて要素数を確認すると10と表示されます。

In [1]: list1 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
...: len(list1)
Out[1]: 10

 

rangeによる範囲指定でのリストの自動作成

連続した数値が含まれるリストを作成する場合、1つ1つ数値を入力していくのは非常に面倒な作業になります。そのようなケースでリストの自動作成を手助けしてくれるのが、rangeになります。

 

rangeに対しては、開始値、終了値、増減量を引数として渡してあげると、その法則に則った数値を含むリストを自動的に作成してくれます。

range([開始値,] 終了値 [, 増減量])

開始値、増減量は省略することも可能です。その場合は、開始値は0、増減量は1とみなされます。

また終了値はインデックスと同様、その数値は含まれません。

 

rangeの利用例をいくつかみてみますと、

1から10まで1ずつ増加した整数を要素として含むリストlist1を作成する場合、開始値に1、終了値に10(10は含まれない)、増減量に1を指定します。

In [1]: list1 = list(range(1,11, 1))
...: list1
Out[1]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

また0から9まで1ずつ増加した整数を要素として含むリストlist2を作成する場合、開始値に1、終了値に10、増減量に1を指定します。開始値、増減量は以下のように省略することもできます。

In [2]: list2 = list(range(10))
...: list2
Out[2]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

さらに以下のように、1から19までの間で3ずつ増加した整数を含むリストlist3も作成することができます。

In [3]: list3 = list(range(1,20, 3))
...: list3
Out[3]: [1, 4, 7, 10, 13, 16, 19]

 

増減量に対してマイナスの数値を指定することにより、順に減少していく数値を要素として格納したリストも作成できます。

例えば、10から2まで1ずつ減少した整数を要素として含むリストlist4を作成する場合、開始値に10、終了値に1(1は含まれない)、増減量に-1を指定します。

In [4]: list4 = list(range(10, 1, -1))
...: list4
Out[4]: [10, 9, 8, 7, 6, 5, 4, 3, 2]

 

リストの要素の確認

指定した値が要素に含まれているかどうかを調べるには、in演算子を使います。

例えば、文字'A'、'B'、'C'、'D'、'E'を格納したリストlist1について、文字'B'が含まれているかを確認する方法は以下になります。list1には'B'が含まれますので、結果はTrueが返ってきます。

In [1]: list1 = ['A', 'B', 'C', 'D', 'E']
...: print('B' in list1)
Out[1]: True

 

同様に、list1に文字'X'が含まれているかを確認すると、list1には'X'が含まれませんので、結果はFalseが返ってきます。

In [2]: print('X' in list1)
Out[2]: False

 
 
関連記事です。
Pythonに関する重要なトピック全般について学んでいきたいと考えておられる方には、次のリンクをお勧めします。

 

-07. リスト(List)

Copyright© AI-interのPython3入門 , 2019 All Rights Reserved.