プログラミング言語Pythonを学びたいけれど、
・配列(list)の基礎がわかっていない…。
・どのようにPythonのlistを活用すれば良いのか迷っている…。
と悩まれている方も多いのではないでしょうか。そこでこの記事では、
・Python 配列の基本事項(初期化や宣言)や要素の追加方法
・要素数(長さ)の取得、要素の削除、配列の結合、検索、ソートなどの具体的な使い方
についてわかりやすく解説します。
Python初心者向けに配列の具体的なソースコードで解説していきます。プログラミング言語Pythonにおいて配列(list)は基本の1つなので、必ず理解しておきましょう。
ぜひ最後まで読んで、Python 配列の基礎を理解してください!
公開日:2024年1月25日
INDEX
Python配列の種類
Python配列にはいくつか種類が存在します。そのなかでも、利用頻度の高いものを4つ紹介します。この記事では、最も基本的な配列である「リスト(list)型」の解説をしていきますが、その他の配列もよく利用するものも多いため、配列の基礎を身につけたあとに学習を進めてください。
リスト(list)型
リスト(list)型は、自由度が高く最も基本的な配列です。異なるデータ型の要素を格納でき、あとから要素を書き換えることができます。リスト型を利用する際には「[]」で宣言します。
タプル(tuple)型
タプル(tupple)型は、要素の書き換えができない配列です。リスト型ではあとから要素を書き換えや追加などができましたが、タプル型ではそれができません。タプル型を利用する際には「()」で宣言します。間違えて要素を変更させないようにしたい場合に利用される配列です。
辞書(dict)型
辞書(dict)型は、要素とキーをセットで管理する配列です。リスト型やタプル型の要素にアクセスする際には、「list[0]」「tupple(0)」のように番号で管理していましたが、辞書型では「dict(key)」のようにラベルとなるキーを用いて管理します。リスト型と同じようにあとから要素を書き換えることが可能です。辞書型は「{}」で宣言し、次のように「キー:要素」を設定します。
1 2 3 |
dict = {“key1”:0, “key2”:1, “key3”:2 } print(dict[“key1”] + dict[“key2”] + dict[“key3”]) |
【出力結果】
1 |
3 |
NumPy配列
NumPy配列は、処理が非常に高速なリスト型です。ただし、通常のリスト型と違い次の制限があります。
- NumPyライブラリをインストールする必要がある
- 異なるデータ型の要素を格納できない
- 長さ(要素数)の変更ができない
NumPy配列の宣言は「numpy.array」ですが、NumPyライブラリのインポート時にエイリアスをつけることで短縮することが可能です。
1 2 3 4 5 |
import numpy as np nplt = np.array(["Lumpy", "Numpy", "Oumpy"]) print(nplt[1]) |
【出力結果】
1 |
Numpy |
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >Python配列:宣言と初期化
Pythonにおける配列の宣言と初期化について解説していきます。 まず、Python 配列の宣言についてですが、
1 |
list = [] |
とソースコードを記述することで、listという変数の配列を作ることができます。
そして、配列の宣言と同時に要素も追加する(初期化する)には、
1 |
list = [1, 4, 9, 16] |
のようにソースコードを記述します。以上で配列の初期化ができました。
Python配列:要素の追加
配列に要素を追加する方法について解説していきます。
Pythonにおいて、配列に要素を追加する方法はいくつかあるので、ぜひ知っておきましょう!
最後尾に要素を追加:+演算子
まずは以下のソースコードみてください。
1 2 3 4 |
list1 = [1, 2, 3, 4, 5] list1 = list1 + [6, 7, 8] print(list1) |
【出力結果】
1 |
[1, 2, 3, 4, 5, 6, 7, 8] |
まず、ソースコード1行目でlist1という配列を用意しています。そして、ソースコード2行目で配列list1に「6, 7, 8」という要素を追加しています。
ここで注意すべきは、ソースコード2行目において
1 |
list1 + [6, 7, 8] |
としないことです。必ず
1 |
list1 = list1 + [6, 7, 8] |
としましょう。以上がPythonにおいて+演算子で配列に要素を追加する方法です。
最後尾に要素を追加:appendメソッド
Pythonでは、appendメソッドを使って配列に要素を追加することでもきます。
では、早速以下のソースコードを見ていきましょう。
1 2 3 4 |
list2 = [10, 20 ,30] list2.append(40) print(list2) |
【出力結果】
1 |
[10, 20, 30, 40] |
appendメソッドを使うことで、配列list2の最後に新たな要素「40」が追加されました。appendメソッドは配列の末尾に新たな要素を追加することができるメソッドです。
以上がappendメソッドでPython 配列に要素を追加する方法です。
指定した位置に要素を追加:insertメソッド
insertメソッドはappendメソッドと違い、任意の位置に要素を追加することができます。
では、insertメソッドの使い方を見てみましょう。
1 2 3 4 |
list3 = [1, 2, 3, 4, 5] list3.insert(3, 10) print(list3) |
【出力結果】
1 |
[1, 2, 3, 10, 4, 5] |
insertメソッドの第一引数には、追加したい位置のインデックスを指定します。insertメソッドの第二引数には追加したい値を指定します。
すると、第一引数で指定したインデックスの直前に、第二引数で指定した値が追加されます。
上記のソースコードだと、「insert(3, 10)」より、list3=[1, 2 ,3, 4, 5]の3と4の間に10が追加されていることがわかります。
配列の先頭に要素を追加したい時は、
1 |
insert(0, 追加したい要素) |
とすれば良いですね。
以上がPython 配列で、要素を追加する方法の解説になります。
Python配列:要素の取得
続いて、配列の要素を取得する方法を解説します。
配列の要素を取得する方法もいくつか存在するため、しっかりと確認していきましょう。
配列の要素を取得:インデックス
配列の要素を取得する基本的な方法は、インデックス(番号)を指定する方法です。リスト内の要素にはインデックスが割り振られており、左から(前から)0,1,2,3~と続きます。
1 2 |
indlt = ["一番", "二番", "三番", "四番", "五番"] print(indlt[0]) |
【出力結果】
1 |
一番 |
また、右から(後ろから)要素を取り出したいときは負の数を指定します。この場合は、-1,-2,-3~と続きます。例えば、先程のリストの最後の要素を取り出したいときには、次のように指定します。
1 |
print(indlt[-1]) |
【出力結果】
1 |
五番 |
最初の要素からを取り出したいときは0スタート、最後の要素からの場合は-1スタートと覚えておきましょう。
なお、「index()メソッド」というものも存在しますが、こちらは「要素を検索してそのインデックスを返す」というものです。詳しくは後ほど解説します。
配列の複数要素を取得:スライス
インデックスを指定すると一つずつ要素を取り出せますが、複数の要素を取り出したい場合には「スライス」を利用します。スライスはインデックスの範囲を指定して要素を取り出すための仕組みです。
スライスはlist[i:j]の形で、iからj-1までの要素が取得できます。先程の配列を用いて、次の条件で要素を取り出してみましょう。
- インデックス1~3の要素を取り出す
- インデックスの先頭から2までの要素を取り出す
- インデックスの3以降の要素を取り出す
1 2 3 4 5 |
indlt = ["一番", "二番", "三番", "四番", "五番"] print(indlt[1:4]) #インデックス1~3の要素を取り出す print(indlt[:3]) #インデックスの先頭から2までの要素を取り出す print(indlt[3:]) #インデックスの3以降の要素を取り出す |
【出力結果】
1 2 3 4 |
['二番', '三番', '四番'] ['一番', '二番', '三番'] ['四番', '五番'] |
インデックス(正) |
0 |
1 |
2 |
3 |
4 |
インデックス(負) |
-5 |
-4 |
-3 |
-2 |
-1 |
要素 |
一番 |
二番 |
三番 |
四番 |
五番 |
慣れるまでは混乱するかもしれませんが、ソースコードを変更しながら理解を深めましょう。なお、スライスでも負の数を指定することができ、その場合のルールもインデックスを指定して値を取り出す場合と同じです。
Python配列:要素の書き換え
リスト型であれば要素の書き換えも可能です。インデックスの理解ができていれば難しいことはありません。書き換える場合には「リスト[インデックス] = 要素」とすることで書き換えられます。
1 2 3 4 5 6 |
animal = ["dog", "cat", "bird", "rat"] print(animal) animal[1] = "lion" print(animal) |
【出力結果】
1 2 |
['dog', 'cat', 'bird', 'rat'] ['dog', 'lion', 'bird', 'rat'] |
この例のように、はじめはanimal配列のインデックス1は「cat」でしたが、「lion」に書き換えられています。また、要素の書き換えでも前述のスライスを利用することが可能です。
1 2 3 4 5 6 |
animal = ["dog", "cat", "bird", "rat"] print(animal) animal[1] = "lion" print(animal) |
【出力結果】
1 2 |
['dog', 'cat', 'bird', 'rat'] ['wolf', 'tiger', 'bird', 'rat'] |
Python配列:要素数(長さ)を取得
Python 配列において、配列の要素数(長さ)を取得するにはlen()関数を使用します。
以下のソースコードをご覧ください。
1 2 |
list4 = [1, 2, 3, 4, 5] print(len(list4)) |
【出力結果】
1 |
5 |
配列list4の要素数(長さ)は確かに5ですね。len()関数は便利な関数なので、ぜひ知っておきましょう。
Python配列:要素の削除
Python配列の要素の削除にも、いくつか方法があります。
指定した位置の要素を削除:del文
del文を使えば、指定した要素を削除することができます。以下のソースコードをご覧ください。
1 2 3 4 |
list5 = [1, 2, 3, 4, 5] del list5[3] print(list5) |
【出力結果】
1 |
[1, 2, 3, 5] |
今回は、「del list5[3]」とすることで、配列list5の「4」という要素(配列のインデックスは0から始まることに注意)を削除しています。
「print(list5)」とすることで配列list5から要素「4」が削除されているのが確認できます。
指定した位置の要素を削除:popメソッド
popメソッドを使えば、指定のインデックスの要素を削除することができます。できることはdel文と同じですが、記述方法が異なるため注意してください。
以下のソースコードをご覧ください。
1 2 3 4 |
list6 = [1, 2, 3, 4, 5] list6.pop(2) print(list6) |
【出力結果】
1 |
[1, 2, 4, 5] |
今回は、popメソッドの引数が「2」なので、配列list6の要素「3」が削除されます。(配列のインデックスは0から始まることに注意)
指定した値の要素を削除:removeメソッド
removeメソッドは、特定の値を削除することができます。
removeメソッドの例を見てみましょう。
1 2 3 4 |
list7 = [10, 20, 30, 20, 40, 50] list7.remove(20) print(liset7) |
【出力結果】
1 |
[10, 30, 20, 40, 50] |
removeメソッドの注意点は、配列に同じ値の要素が複数存在する場合は最初の要素のみを削除するということです。
よって今回は、配列list7には「20」という要素が2つあったにも関わらず、最初の「20」のみがremoveメソッドによって削除されています。
以上がPython 配列の要素を削除する方法になります。
Python配列:配列を結合
Python配列同士を結合させる方法について解説します。
まずは2つの配列を結合させる方法から見ていきましょう。
2つの配列を結合(extendメソッド)
extendメソッドを使えば、2つの配列を結合させることができます。
では、extendメソッドの使い方をご覧ください。
1 2 3 4 5 |
list8 = [1, 2, 3] list9 = [4, 5, 6] list8.extend(list9) print(list8) |
【出力結果】
1 |
[1, 2, 3, 4, 5, 6] |
extendメソッドで配列list8に対してlist9を結合しています。
複数の配列を結合:+演算子
では、2つの配列ではなく、複数の配列を結合させるにはどうすれば良いのでしょうか?
複数の配列を結合させるには、+演算子を使います。
1 2 3 4 5 6 |
list9 = [1, 2] list10 = [3, 4] list11 = [5, 6] list12 = list9 + list10 + list11 print(list12) |
【出力結果】
1 |
[1, 2, 3, 4, 5, 6] |
ソースコード4行目において、list12という新たな配列を用意して、list9〜list11までを結合しています。
複数の配列を結合させる時は、extendメソッドよりも+演算子を使う方が便利です。
Python配列:配列の分割
Python配列は結合できるように、分割することも可能です。最も単純な分割方法はスライスを用いる方法でしょう。
1 2 3 4 5 6 7 8 9 |
grade = ["1年生", "2年生", "3年生", "4年生", "5年生", "6年生"] low = grade[:2] mid = grade[2:4] high = grade[-2:] print(low) print(mid) print(high) |
【出力結果】
1 2 3 4 |
['1年生', '2年生'] ['3年生', '4年生'] ['5年生', '6年生'] |
スライスを用いて「grade」リストから要素を抜き出し、それぞれ「low」「mid」「high」に代入することで配列を分割することができました。
Python配列:要素の検索
「要素に指定した値が存在するか?」や「指定した値が配列に何個存在するか?」を調べる方法について解説します。
指定要素が存在するか検索:in演算子
in演算子を使えば、指定した値が要素に存在するかを調べることができます。
1 2 |
list13 = [1, 2, 3, 4, 5] print(3 in list13) |
【出力結果】
1 |
True |
まず、検索したい値をinの前に記述し、inの後ろに検索対象となる配列を指定します。
今回、「3」という値は配列list13に含まれているので、Trueが出力されました。
例えば、 検索する値を「500」にすると、配列list13には含まれていないので出力結果はFalseとなります。
1 2 |
list13 = [1, 2, 3, 4, 5] print(500 in list13) |
【出力結果】
1 |
False |
指定要素の位置を検索:indexメソッド
indexメソッドを使えば、指定した値が配列に含まれている場合は、その値の要素の最初のインデックスを調べることができます。
1 2 |
list14 = [1, 20, 3, 4, 20, 5] print(list14.index(20)) |
【出力結果】
1 |
1 |
indexメソッドの引数である「20」は配列list14に含まれていますね。
配列list14には「20」という要素は2つありますが、indexメソッドでは最初の20のインデックスのみを取得するので、出力結果は1となります。
例えば、次のように配列list14に含まれていない値を指定すると、エラーが表示されます。
1 2 |
list14 = [1, 20, 3, 4, 20, 5] print(list14.index(100)) |
【出力結果】
1 |
ValueError: 100 is not in list |
これは「100という値は配列にはない」とエラーです。
指定要素の数を検索:countメソッド
countメソッドを使えば、指定した値がいくつ配列に含まれているか?を調べることができます。
1 2 |
list15 = [1, 2, 2, 2, 4, 5, 2] print(list15.count(2)) |
【出力結果】
1 |
4 |
countメソッドの引数「2」は、配列list15には4個存在しているので、出力結果は「4」となりました。
Python 配列の要素の検索に関する解説は以上になります。
Python配列:配列の並べかえ
配列の要素をソート(並び替え)する方法について解説します。
まずは、要素を昇順に並び替える方法から見ていきましょう。
昇順に並べ替え:sortメソッド
配列を昇順に並べ替えたいときは「sortメソッド」を利用します。
こちらがsortメソッドの例とその結果です。
1 2 3 4 5 6 7 8 9 10 11 |
list16 = [4, 1, 3, 5, 2] list17 = ["B", "A", "C"] print(list16) list16.sort() print(list16) print(list17) list17.sort() print(list17) |
【出力結果】
1 2 3 4 5 |
[4, 1, 3, 5, 2] [1, 2, 3, 4, 5] ['B', 'A', 'C'] ['A', 'B', 'C'] |
sortメソッドを使うと、数値であれば昇順(小さい順から大きい順)に、文字列であれば文字コードの並び順(今回はABC順)に配列の要素を並び替えることができます。
降順に並べ替え:sortメソッド(reverse=True)
降順に並べ替えたいときは、sortメソッドの引数に「reverse=True」を指定します。
1 2 3 4 5 |
list18 = [3, 1, 4, 2, 5] print(list18) list18.sort(reverse=True) print(list18) |
【出力結果】
1 2 |
[3, 1, 4, 2, 5] [5, 4, 3, 2, 1] |
sortメソッドだけで昇順・降順ともに並べ替えできますので覚えておきましょう。
なお、「reverseメソッド」というものも存在しますが、こちらは配列の要素をリバース(逆順)にするものであり、ソートとは異なるため注意してください。
1 2 3 4 5 |
list19 = [3, 1, 4, 2, 5] print(list19) list19.reverse() print(list19) |
1 2 |
[3, 1, 4, 2, 5] [5, 2, 4, 1, 3] |
Python配列:配列の自動作成
ここまで、Python配列の初期化では要素を一つずつ指定していましたが、連続する値であれば「rangeメソッド」を使って簡単に自動作成できます。今回は、rangeメソッドを使って3種類のリストを自動作成してみましょう。
- 0~9の値を要素とする配列
- 10~20の値を要素とする配列
- 10~20までの偶数を要素とする配列
1 2 3 4 5 6 7 8 |
list20 = list(range(10)) # range(終了-1) list21 = list(range(10,21)) # range(開始, 終了-1) list22 = list(range(10,21,2)) # range(開始, 終了-1, 間隔) print(list20) print(list21) print(list22) |
【出力結果】
1 2 3 4 |
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] [10, 12, 14, 16, 18, 20] |
rangeメソッドの引数が1つだけの場合、0から始まり指定した値(終了)-1までの連続した数値を要素とする配列が作られます。そのほか、例のように引数を増やすことで、開始値や間隔値も変更することが可能です。rangeメソッドでもスライスを使うことができ、応用したものがよく利用されます。いろいろと値を変えながら結果を確認し、rangeメソッドをマスターしましょう。
Pythonについて網羅的に学ぶには?
プログラミング言語Python 配列の基礎が理解できたでしょうか?
Pythonは、近年需要が高まっているプログラミング言語の1つです。Pythonの知識を深めておくことは、今後のキャリアに必ず役立つことでしょう。
これからPythonのプログラミングについて学びたい方には、下記の講座がおすすめです。
はじめてのPythonプログラミング入門
生成AI,機械学習、データサイエンス、ウェブ制作に役立つプログラミングの基礎知識を習得しよう
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★★
初心者にも取り組みやすい演習が沢山用意されており、理解しやすく良かった。
評価:★★★★★
変数の説明や、input関数の例がとてもわかりやすいです。
Pythonを効率良く学んで、今後のキャリアに役立てましょう!
最新情報・キャンペーン情報発信中