プログラミングをしていると、複数の値を管理したい場面が数多く存在します。
例えば、生徒の点数を管理するプログラムを作成する際に、
1 2 3 4 5 6 |
#生徒それぞれに変数を割り当てる student_a = 50 student_b = 45 student_c = 90 student_d = 38 student_e = 76 |
このようにすべての生徒に変数を割り当てる事ができます。
しかし、このやり方だと、数多くの変数が存在して、管理が煩雑になりがちです。
そんなときに役立つのが、リスト(配列)です!
リスト(配列)

リスト(配列)の作り方は至ってシンプルです。
格納したい値をカンマ区切りで[ ]に代入して、並べていくだけです。先程の生徒の点数の場合、
1 2 |
#配列で点数管理 students = [50,45,90,38,76] |
これで終了です。記述がシンプルになり、見やすくなったと思いませんか?
これが配列の大きなメリットで、複数の値一式を、一つの変数に代入して管理することができます。
リストの活用編(for文で全処理)
リストで複数の値を管理できるようになったので、次は、リストで格納した値を使う方法を紹介します。

こういった形で、for文と組み合わせることで、リストの中の値をすべて吐き出させることができます。例えば、
1 2 3 4 5 6 7 8 9 10 |
#listの中身をすべて吐き出す #list作成 students = [50,45,90,38,76] #forループ for i in students: print(i) #結果 50 45 90 38 76 |
for文を利用して、配列で管理している生徒の点数すべてをprintすることができました。
また、for文とif文を組み合わせることで更に複雑なプログラミングを可能にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#if文を組み合わせる #list作成 students = [50,45,90,38,76] count = 0 #forループ for i in students: if i >= 50: count += 1 print(count) #結果 3 |
こういったプログラムに変更すれば、50点以上の点数を取った生徒の人数を数えることができるようになります。
リストの値の表示・追加・変更・削除
作成したリストに対して、
- 特定の順番の値の表示
- リストへの値の追加
- 値の変更
- リストの値の削除
等、様々な操作が可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#リストの操作 #list作成 students = [50,45,90,38,76] #特定の順番の値の表示 print(students[0]) # 1番目の値を表示 結果 50 print(students[3]) # 4番目の値を表示 結果 38 #値の追加 students.append(40) #1番後ろに値を追加 print(students) #結果 [50,45,90,38,76,40] students.insert(2, 100) #2番目に値を追加 print(students) #結果 [50,45,100,90,38,76,40] #値の変更 students[2] = 20 print(students) #結果 [50,45,20,90,38,76,40] #値の削除 del students[2] #3番目の要素である20をstudentsリストから削除 print(students) #結果 [50,45,90,38,76,40] |
※インデックス番号は0から数えるため[0]の場合は1番目の値。[2]の場合は3番目の値になります。
このようにリストに様々な操作を行い、ユーザーが求めるデータを生成することが可能です。
リストのスライス

スライスという方法を使うと、リストの開始位置と終了位置を指定して、リストを切り取ることが出来ます。2番目の生徒から4番目の生徒まで、3人分の点数を切り出したい場合、
1 2 3 4 5 6 7 |
#listをsliceする #list作成 students = [50,45,90,38,76] print(students[1:4]) #結果 [45, 90, 38] |
このように記述します。
ここで、気をつけないといけないことは、終了位置はインデックス番号に+1をした値を記述しなければならないということです。
1 2 3 4 5 6 7 |
#listをsliceする #list作成 students = [50,45,90,38,76] print(students[:3]) #結果 [50, 45, 90] print(students[3:]) #結果 [38, 76] |
こういう書き方をすれば、開始位置と終了位置を省略することも可能です。
リストの要素の数が将来的に増える可能性がある場合は、終了位置を省略して記述しておけば、リファクタリングの工数を減らすことが出来ます。
タプル(tuple)

リストと似たようなものでタプルというものがあります。
タプルはリストと同じだと思って問題ありません。1点だけ大きな違いがあるとすれば、
「タプルは要素を変更できない」
ということです。
リストのところで紹介したように、
リスト[インデックス番号] = 値
と記述すれば、リストの任意の値を変更できます。
しかし、タプルではこういった変更が出来ません。
絶対に変更をしないマスターデータとしてリストを作成したい場合はタプルを使用しましょう。
辞書型(dict)
リストを紹介してきましたが、ここで辞書型(dict)という、とても便利な値の管理方法を紹介します。

このキーと値をペアにしたdictという記述方法。リストでは値を複数管理して、各値に数値を割り当てていましたが、dictの場合は各値に「キー」という命名が可能になっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#dictの記述方法 #dict作成 students = { "a": 50, "b": 45, "c": 90, "d": 38, "e": 76 } print(students["a"]) #結果 50 print(students["d"]) #結果 38 |
このように、生徒の点数の例で表すと、aさんは50点、bさんは45点、cさんは90点と、点数に氏名のラベルをつけることが出来ます。そして、「変数[“キー”]」を宣言することで、そのキーとペアの値を出力することが出来ます。
forループに利用できるkeys()メソッド
リスト型と同様、for文で利用する際には「keys()メソッド」を使用します。このメソッドは、dictのキー一覧を取得するメソッドで、このメソッドで取得したキー一覧をfor文で繰り返して利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#keys()とforループ #dict作成 students = { "a": 50, "b": 45, "c": 90, "d": 38, "e": 76 } for i in students.keys(): print("{0}さんの点数は、{1}点です。".format(i, students[i])) #結果 #aさんの点数は、50点です。 #bさんの点数は、45点です。 #cさんの点数は、90点です。 #dさんの点数は、38点です。 #eさんの点数は、76点です。 |
※format()メソッドの使い方はコチラを参照。
keys()メソッドでstudentsに格納されているキー一覧を取得して、for文で利用しています。for文内で、iに格納されたキーをstudens[キー]に利用することで、そのキーに該当する値を取得して出力しています。
dictを使えば、listよりも詳しくデータを管理できることがわかりますね!
もっと便利に使うためのitems()メソッド

- keys()メソッドを使って、すべてのキーを取得して
- 値を使いたいときは、dict[キー]
という手法でもいいのですが、わざわざdict[キー]するのはめんどくさい気がしますよね?
そんなときに使える手法が、items()メソッドです。このメソッドを利用すれば、dictのキーと値を同時に取得してfor文の中で使えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#items()とforループ #dict作成 students = { "a": 50, "b": 45, "c": 90, "d": 38, "e": 76 } for key, val in students.items(): print("{0}さんの点数は、{1}点です。".format(key, val)) #結果 #aさんの点数は、50点です。 #bさんの点数は、45点です。 #cさんの点数は、90点です。 #dさんの点数は、38点です。 #eさんの点数は、76点です。 |
こちらの例のように、keyにキー・valに値を格納して、for文の中で出力しています。
プログラミングをする際に気をつけるべきことは、「ひと目で意味がわかるコードを書く」ことです。itemsメソッドを使って、キーと値に意味のある名称をつければ、後からプログラムを見返したときに理解が早くなります。
複数のデータ管理まとめ
- リスト(list)型
- タプル(tuple)型
- 辞書(dict)型
など、データをて管理する方法は複数あります。
状況に応じて、記法を使い分けましょう!