「配列を使うと複数のデータを格納できるらしいけど、格納したデータをどうやって使えば良いの?」
本記事ではこのような悩みを解決します。
Pythonで配列が使えるようになると、できることの幅が大きく広がります。
配列を使うと多くのデータを自在に操ることができるようになるため、より高度なプログラムが作れるようになります。そうなるとプログラミングの楽しさがさらにわかってきますよ。
本記事ではPythonの配列について初心者でもわかるように解説します。
ぜひ本記事を読んで、Pythonでの配列の扱い方をマスターしましょう!
Pythonの配列とは
まずはPythonの配列とは何か?ということを理解しておきましょう。
そもそも配列って何?という基礎的なことを解説した後、配列によって何ができるかについても解説します。まずは配列に関する基本的なことを理解していきましょう。
そもそも配列って?
配列とは、いくつかのデータがひとかたまりになったものです。似たような種類のデータを配列の中にまとめておくことによって、プログラムの中で扱いやすくなるのです。
イメージとしては、配列はデータを入れておく箱だと考えてください。たとえば「太郎」や「花子」という個々の生徒のデータは、「1年1組」という箱にまとめることができます。箱の中のデータはいつでも取り出したり、並び替えたりすることができます。
このように配列は複数のデータをひとまとめにするときに役立ちます。
配列によってできること
配列にデータを格納せず、以下のように別々の変数を作ってデータを入れるとします。
seito1 = “太郎” seito2 = “花子” seito3 = “健太” seito4 = “弘子” seito5 = “二郎” |
このようにすると、たとえば「生徒をあいうえお順に並べ替えたい」という場合に、全ての変数をプログラムで読み込む必要があります。
また「生徒のデータを増やしたい」という場合、そのたびに新しい変数を作らねばならず、どんどん変数が増えていってしまいます。
そこで「1年1組」という配列の中に、生徒のデータを入れたとします。そうすればあいうえお順に並べ替える場合も、生徒のデータを増やす場合も、その配列だけを操作すればよいことになります。
このように配列を使うと、データを変更したり並べ替えたりしたいときに便利です。
配列を使用すると、具体的には次のようなことができるようになります。
- 配列内のデータを増やす・減らす
- 配列の要素数を計算する
- 配列内のデータ同士を結合させる
- 配列内のデータを並び替える
- 配列内に特定のデータがないか検索する
- 配列内のデータの最大値・最小値を求める
- 配列同士を結合させる
ここまで便利な機能を使わない手はありませんね。
ぜひ配列を自分のものにして、複数のデータを操れるようになりましょう。
Pythonの配列の使い方・具体例
それではPythonの配列の具体的な使い方を解説していきます。配列の初期化方法から様々な操作方法までをまとめてあります。
配列に関する基本的機能はひと通り網羅したので、ぜひ参考にしてくださいね。
宣言・初期化・出力
Pythonの配列は次のようにして宣言します。
list = [ ] |
空の配列を作る場合は「配列名 = []」と記述してください。これで空の配列「list」を作ることができます。もちろん、後からこの配列にデータを入れていくことができます。
また、すでにデータが入った配列を作ることも可能です。配列の宣言と同時に初期化を行うには、次のように記述します。
list = [1, 2, 5, 9] |
この配列「list」には作られた時点で4つの数値「1」「2」「5」「9」が格納されています。このように「配列名 = [データ1,データ2,…]」と記述すれば、最初から配列にデータを入れることができます。実際はこちらの書き方が多く使われますね。
print関数を使って配列の中身を出力する場合は、次のようにします。
list = [1, 2, 5, 9] print (list) |
■実行結果
Documents $ 1python test.py [1, 2, 5, 9] Documents $ 1 |
また、配列の要素を出力する場合は、次のように書きます。
list = [1, 2, 5, 9] print (list[1]) |
■実行結果
Documents $ 1python test.py 2 Documents $ 1 |
このように配列の要素を操作する場合には、[]内にデータの番号を入れます。これで配列内の1番目のデータである「2」を出力させることができます。
Pythonでは配列の要素番号は「0」から始まって「1」「2」…と続いていきます。上の例の場合、0番目のデータは「1」で1番目のデータは「2」になるのです。
要素を追加する
配列にデータを追加する場合は、appendメソッドというものを使います。次の例を見てください。
list = [1, 3, 4, 6] list.append(8) print(list) |
■実行結果
Documents $ 1python test.py [1, 3, 4, 6, 8] Document $ 1 |
「配列名.append(追加する要素)」の形で配列の末尾に要素を追加することができます。上記の例では、「1, 3, 4, 6」という配列の末尾にappendメソッドで「8」を追加しています。その結果「1, 3, 4, 6, 8」になりました。
appendメソッドについてはこちらの記事で詳しく解説しています!
また、末尾以外にデータを追加したい場合は、insertメソッドが便利です。
list = [1, 3, 4, 6] list.insert(0, 8) print(list) |
■実行結果
Documents $ 1python test.py [8, 1, 3, 4, 6] Document $ 1 |
「配列名.insert(追加する位置, 追加する要素)」の形で、配列の途中にも要素を追加することができます。上記の例ではinsertメソッドで配列の「0」番目に「8」を追加しています。その結果「8, 1, 3, 4, 6」になりました。insertメソッドでは追加するデータの位置を第1引数に指定することができるのです。
さらに、第1引数に負の数「-n」を入れることで末尾からn番目に追加することもできます。
list = [1, 3, 4, 6] list.insert(-1, 8) print(list) |
■実行結果
Documents $ 1python test.py [1, 3, 4, 8, 6] Document $ 1 |
この場合は末尾から1番目にデータを入れているので、「1, 3, 4, 8, 6」になりました。
このように、末尾に追加する場合はappend、それ以外に追加する場合はinsertを使いましょう。
要素を削除する
配列の要素を削除したい場合はpopメソッドが便利です。
list = [1, 3, 4, 6] list.pop(0) print(list) |
■実行結果
Documents $ 1python test.py [3, 4, 6] Documents $ 1 |
「配列名.pop(削除する要素の番号)」の形で、配列の要素を削除することができます。ここではpopメソッドに「0」を指定したので、0番目のデータである「1」が削除されました。
また、引数の負の数を入れることで末尾からの位置を指定することも可能です。
list = [1, 3, 4, 6] list.pop(-2) print(list) |
■実行結果
Documents $ 1python test.py [1, 3, 6] Documents $ 1 |
上記の例では末尾から2番目の値である「4」が削除されています。
なお、popメソッドを引数なしで実行した場合には、末尾の要素が削除されます。
list = [1, 3, 4, 6] list.pop() print(list) |
■実行結果
Documents $ 1python test.py [1, 3, 4] Documents $ 1 |
配列の要素をすべて削除したい場合は、clearメソッドが便利です。
list = [1, 3, 4, 6] list.clear() print(list) |
■実行結果
Documents $ 1python test.py [] Documents $ 1 |
「配列名.clear()」の形で、配列の要素をすべて削除することができます。
また、指定した値の要素を削除したい場合は、removeメソッドが便利です。
list = [1, 3, 4, 6] list.remove(3) print(list) |
■実行結果
Documents $ 1python test.py [1, 4, 6] Documents $ 1 |
「配列名.remove(削除する要素)」の形で、配列の要素のうち、removeメソッドの引数に一致するものを削除することができます。popメソッドでは要素の「位置」を引数に入れていたのに対し、removeメソッドでは要素の「値」が引数に入ることに注意してください。
このように要素を削除したい場合は、pop、clear、removeの3つのメソッドを使いこなしましょう。
要素数を取得する
配列の要素数を取得する場合は、len関数を使います。
len関数は文字列の長さを取得するときに使用する関数です。次の例を見てください。
print(len(“abc”)) |
この場合、文字列「abc」は3文字なので「3」と出力されます。
実は配列の要素数を取得するときにもlen関数が使えます。引数に配列を入れることで、その配列の要素数がわかるのです。
list = [1, 3, 4, 6] print(len(list)) |
■実行結果
Documents $ 1python test.py 4 Documents $ 1 |
このように記述することで、配列の要素数が出力されます。「len」はメソッドではなく関数なので、「list.len()」などとは書けないことに注意してください。
また、配列のすべての要素数ではなく、特定の値の要素の数を取得したい場合はcountメソッドが便利です。
list = [1, 3, 4, 6, 1] print(list.count(1)) |
■実行結果
Documents $ 1python test.py 2 Documents $ 1 |
「配列名.count(要素の値)」の形で、配列の要素のうち、countメソッドの引数に一致するものの数を取得できます。上記の例では「1」が配列内に2つあるので「2」と出力されていますね。
このように、配列の要素数を取得したい場合はlen関数、特定の値の要素数を取得したい場合はcountメソッドを使いましょう。
要素を結合する
配列の要素を結合するには、for文で配列の要素を1つずつ取り出していく手もあります。しかし、joinメソッドを使用することで効率的に要素が結合できます。
list = [“a”, “b”, “c”, “d”] result = ”&”.join(list) print(result) |
■実行結果
Documents $ 1python test.py a&b&c&d Documents $ 1 |
「結合に使う文字列.join(配列名)」の形で、結合に使う文字列を指定してデータを結合させることができます。上記の例では「a」「b」「c」「d」を「&」で結合しているので「a&b&c&d」と出力されます。
「結合に使う文字列」を空にすることで、データをそのまま結合させることも可能です。
list = [“a”, “b”, “c”, “d”] result = “”.join(list) print(result) |
■実行結果
Documents $ 1python test.py abcd Documents $ 1 |
joinメソッドは文字列を結合させるときには便利ですが、文字列と数値とを結合させることはできません。文字列と数値をそのまま結合させるとエラーが起きてしまいます。
そこで必要になってくるのがmap関数です。
list = [“a”, “b”, “c”, “d”, 1] data = map(str, list) result = “”.join(data) print(result) |
■実行結果
Documents $ 1python test.py abcd1 Documents $ 1 |
「map(str, 配列名)」の形で、配列の各要素を文字列に変換することができます。そうすれば通常通りjoinメソッドで結合することができます。
このように数値と文字列を結合させるときはひと工夫いるので気をつけましょう。
map関数についてはこちらの記事で詳しく解説しています!
要素をソートする
配列の要素をあいうえお順・数値順に並べ替えたい場合、sortメソッドを使うのが基本です。
sortメソッドを使うと、要素を昇順に並べ替えることができます。
list = [4, 1, 3, 6] list.sort() print(list) |
■実行結果
Documents $ 1python test.py [1, 3, 4, 6] Documents $ 1 |
上記の例では配列を昇順に並べ替えた結果、「1, 3, 4, 6」となっていますね。
また、sorted関数を使うやり方もあります。
list = [4, 1, 3, 6] print(sorted(list)) |
■実行結果
Documents $ 1python test.py [1, 3, 4, 6] Documents $ 1 |
同じように「1, 3, 4, 6」と並べ替えられていますね。ただしsortメソッドを使った場合には配列の要素順が変更されるのに対して、sorted関数では元の配列の要素順は変更されません。上のプログラムで「print(sorted(list))」の次に「print(list)」とすると元のままの「4,1,3,6」が出力されることを確認してください。
これまでのやり方では、配列を昇順にしか並べ替えることができません。配列を降順に並べ替えたい場合は、reverseメソッドを使いましょう。
list = [1, 3, 4, 6] list.reverse() print(list) |
■実行結果
Documents $ 1python test.py [6, 4, 3, 1] Documents $ 1 |
上記の例では、reverseメソッドを使って配列を降順にしています。「6, 4, 3, 1」となっていますね。
さらに、配列の要素をランダムに並べ替えたい場合はrandom.shuffle関数が使えます。
import random
list = [1, 3, 4, 6] |
■実行結果
Documents $ 1python test.py [1, 6, 3, 4] Documents $ 1 |
random.shuffle関数を使うときには、上記の例の1番上のように「import random」でrandomモジュールを読み込んでください。
これで配列をランダムに並び替えることができます。何回か実行して異なる結果が出ることを確かめてください。
このように、配列を昇順に並べ替えるときはsort、降順ならreverse、ランダムならrandom.shuffle関数使いましょう。
要素を検索する
配列内に特定のデータが入っているか検索したい場合は、indexメソッドを利用します。
list = [1, 3, 4, 6] print(list.index(3)) |
■実行結果
Documents $ 1python test.py 1 Documents $ 1 |
「配列名.index(値)」でその値を検索し、その値が何番目にあるかを返します。上記の例だとindexメソッドの引数に「3」を指定しているので、「1」が返却されました。
このように、ただ単に要素を検索したい場合はindexメソッドが便利です。
indexメソッドについてはこちらの記事で詳しく解説しています!
要素の最小・最大を求める
配列の要素の最小値を取得したい場合はmin関数が便利です。
list = [1, 3, 4, 6] print(min(list)) |
■実行結果
Documents $ 1python test.py 1 Documents $ 1 |
「min(配列名)」の形でその配列の要素の最小値を取得することができます。上記の例だと最小値である「1」が出力されていますね。
また、「最大値」を取得する場合はmax関数を利用します。
list = [1, 3, 4, 6] print(max(list)) |
■実行結果
Documents $ 1python test.py 6 Documents $ 1 |
「max(配列名)」の形でその配列の要素の最大値を取得することができます。上記の例だと最大値である「6」が出力されていますね。
最小値・最大値を求める場合は、このようにmin関数とmax関数を使っていきましょう。
2つの配列を結合させる
配列と配列を結合させたい場合は、extendメソッドというものが便利です。例を見ていきましょう。
list1 = [1, 3, 4, 6] list2 = [5, 6, 8, 9] list1.extend(list2) print(list1) |
■実行結果
Documents $ 1python test.py [1, 3, 4, 6, 5, 6, 8, 9] Documents $ 1 |
「配列名1.extend(配列名2)」の形で、配列1の末尾に配列2を結合させることができます。上記の例では、list1とlist2をextendによって結合させています。
このようなやり方で2つの配列を結合させることが可能です。
3つ以上の配列を結合させたい場合は、extendを使うことができないので、+演算子を使って結合させるしかありません。
list1 = [1, 3, 4, 6] list2 = [5, 6, 8, 9] list3 = [3, 4, 8, 10] print(list1 + list2 + list3) |
■実行結果
Documents $ 1python test.py [1, 3, 4, 6, 5, 6, 8, 9, 3, 4, 8, 10] Documents $ 1 |
上記のように +演算子で足していけば良いです。
2つの配列を組み合わせるだけならextendメソッドを使った方が良いですが、それ以外はこのようにして結合させましょう。
Pythonの配列の使い方・応用編
ここからは配列の応用編となります。他の構文と組み合わせることによって、配列がどんな働きをするかを見ていきましょう。
for文と組み合わせる
配列の要素を1つずつ出力させる場合、次のように1つずつ配列の番号を指定すればとりあえず出力できます。
list = [1, 3, 4, 6]
print(list[0]) |
しかしこの方法では要素数が100個、1000個と大きい場合にはいちいち書くのが大変になりますよね。そこでfor文を使って配列の要素を1つずつ取り出す方法を覚えておきましょう。
list = [1, 3, 4, 6]
for i in list: |
■実行結果
Documents $ 1python test.py 1 3 4 6 Documents $ 1 |
「in 配列名」でfor文に配列を読み込ませます。for文は配列の要素を1つずつ読み込んで変数に格納してくれます。ここでは配列「list」の要素を1つずつ変数「i」に格納していますね。後は「print(i)」によって配列の要素を出力しています。
このように、for文を使って配列の要素を1つずつ出力させることができるのです。
for文と内包表記を組み合わせる
見慣れない書き方かもしれませんが、内包表記というものも覚えておきましょう。内包表記とは、for文と組み合わせて配列を操作するときに便利な記法のことです。
for文を使うとソースコードが長くなってしまう場合でも、内包表記を使えば簡潔にまとめることができます。
例を見ていきましょう。たとえば、配列の要素をそれぞれ2倍にしたい場合は、for文を使って次のように書きますよね。
list = [1, 3, 4, 6] list_new = []for i in list: list_new.append(i*2)print(list_new) |
上記の例では配列「list」のデータをfor文で1つずつ取り出し、値を2倍にした後に、list_newという配列に格納しています。
内包表記を使ってこのプログラムを書き直すと、次のようになります。
list = [1, 3, 4, 6] list_new = [i*2 for i in list] print(list_new) |
■実行結果
Documents $ 1python test.py [2, 6, 8, 12] Documents $ 1 |
いかがでしょう? 行数が減ってソースコードがすっきりしましたよね。
内包表記では、[配列に格納する値 {for文}]の形で[]の中に配列に格納する値とfor文を記述します。こうすることで、for文でデータを取り出す処理と新しい配列にデータを格納する処理を一行で行うことができるのです。
内包表記は便利なのでぜひ覚えておきましょう。
2次元配列を作る
冒頭で、配列は「データを入れておく箱のようなもの」だと説明しました。実は、箱の中にさらに箱を作って、そこにデータを入れておくこともできるのです。これが2次元配列と呼ばれるものです。
2次元配列には、例えば次のようなものがあります。
list = [[1, 3, 4, 6],[5, 6, 8, 9]] print(list) |
■実行結果
Documents $ 1python test.py [[1, 3, 4, 6], [5, 6, 8, 9]] Documents $ 1 |
この例では、配列「list」の中にさらに2つの配列「[1,3,4,6]」と「[5,6,8,9]」を格納しています。これまでの配列は数値や文字列などのデータを要素に持っていました。これに対して、2次元配列とは配列を要素に持った配列だと言えます。
データを2重に格納できると、縦横の「符号」として格納できるため、たとえば「エクセルのどの位置にデータが入っているか」などを示すときに便利です。
2次元配列もよく使うことになるので覚えておきたいところです。
『Tech Teacher』3つの魅力
魅力1. オーダーメイドのカリキュラム
『Tech Teacher』では、決められたカリキュラムがなくオーダーメイドでカリキュラムを組んでいます。「質問だけしたい」「相談相手が欲しい」等のご要望も実現できます。
魅力2. 担当教師によるマンツーマン指導
Tech Teacherでは、完全マンツーマン指導で目標達成までサポートします。
東京大学を始めとする難関大学の理系学生・院生・博士の教師がが1対1で、丁寧に指導しています。
そのため、理解できない箇所は何度も分かるまで説明を受けることができます。
魅力3. 3,960円/30分で必要な分だけ受講
Tech Teacherでは、授業を受けた分だけ後払いの「従量課金制」を採用しているので、必要な分だけ授業を受講することができます。また、初期費用は入会金22,000円のみです。一般的なプログラミングスクールとは異なり、多額な初期費用がかからないため、気軽に学習を始めることができます。
まとめ
・魅力1. 担当教師によるマンツーマン指導
・魅力2. オーダーメイドのカリキュラム
・魅力3. 3,960円/30分で必要な分だけ受講
質問のみのお問い合わせも受け付けております。
まとめ
本記事ではPythonの配列について解説しました。改めて本記事で学んだことをまとめておいたので、参考にしてください。
■配列の初期化
・list = [] #空の配列
・list = [要素1,要素2,…] #データの入った配列
■要素を追加する
・appendメソッド #末尾に追加
・insertメソッド #指定した位置に追加
■要素を削除する
・popメソッド #指定した位置の値を削除
・clearメソッド #値をすべて削除
・removeメソッド #指定した値を削除
■要素数を取得する
・len関数 #配列の数を取得
・countメソッド #指定した値の要素数を取得
■要素を結合する
・joinメソッド #配列を結合する
■要素をソートする
・sortメソッド #要素を昇順に並べ替える
・sorted関数 #要素を昇順に並べ替えた配列を返す
・reverseメソッド #要素を降順に並べ替える
・random.shuffle関数 #要素をランダムに並べ替える
■要素を検索する
・indexメソッド #指定した値を検索
■要素の最小・最大値を取得する
・min関数 #要素の最小値を取得
・max関数 #要素の最大値を取得
■配列同士を結合させる
・extendメソッド #2つの配列を結合させる
・+演算子 #3つ以上の配列を結合させる
■for文と組み合わせる
・for i in list:
・print(i)
■for文と内包表記を組み合わせる
・list_new = [i*2 for i in list]
■2次元配列を作る
・list = [[1, 3, 4, 6],[5, 6, 8, 9]]
少しややこしいですが、メソッドと関数の違いに注意しましょう。
本記事の内容を理解できればPythonの配列の基礎は万全と言えます。配列を利用できるようなれば、データを多く扱う高度なアプリケーションを作成できるようになります。実際の現場でも配列を扱う機会は多く、Pythonプログラマーなら欠かせない知識と言えます。
ぜひ本記事を参考にしてPythonの配列の基礎をマスターしてくださいね。
このブログでは他にもPythonの学習に役立つ情報を発信しています!ぜひご覧ください。
https://www.tech-teacher.jp/blog/python-for/
https://www.tech-teacher.jp/blog/python-list/