配列・リストとは?プログラミング初心者向けにPythonでわかりやすく解説

プログラミング

はじめに

プログラミングを勉強していると、「配列」や「リスト」という言葉がよく登場します。

「配列って何?」
「リストと配列は同じもの?」
「Pythonではどうやって使うの?」

と疑問に感じる人も多いのではないでしょうか。

配列やリストとは、簡単にいうと、

複数のデータをまとめて扱うための仕組み

です。

たとえば、3人のテストの点数をそれぞれ別の変数に入れると、

score1 = 70
score2 = 80
score3 = 90

のようになります。

しかし、データが100人分、1000人分になったら、1つずつ変数を作るのは大変です。

そこで使うのが、配列やリストです。

この記事では、プログラミング初心者や高校生向けに、配列・リストとは何かをPythonのサンプルコードを使ってわかりやすく解説します。

配列・リストとは

配列やリストとは、複数のデータをまとめて管理するための仕組みです。

たとえば、テストの点数が、

70
80
90

の3つあったとします。

これを別々の変数にすると、

score1 = 70
score2 = 80
score3 = 90

となります。

これでも問題ありません。

しかし、人数が増えると変数の数も増えてしまいます。

そこで、Pythonでは次のように書けます。

scores = [70, 80, 90]

これで、

70
80
90

という3つの値を、1つの変数 scores にまとめて保存できます。

これがリストです。

Pythonでは「リスト」と呼ぶ

プログラミングでは「配列」という言葉がよく使われますが、Pythonでは複数のデータをまとめる基本的な仕組みとして「リスト」を使います。

Pythonでは、

scores = [70, 80, 90]

のように、角かっこ [] を使ってリストを作ります。

他のプログラミング言語では「配列」と呼ばれることが多いため、初心者向けの記事などでは、

配列・リスト

とまとめて説明されることもあります。

リストを使うメリット

リストを使うと、複数のデータを1つの変数で管理できます。

たとえば、

fruits = ["りんご", "みかん", "バナナ"]

とすると、

りんご
みかん
バナナ

という3つの文字列をまとめて管理できます。

リストを使えば、

  • データをまとめて保存できる
  • データを順番に取り出せる
  • データを追加できる
  • データを削除できる
  • 繰り返し処理と組み合わせられる

といったことができます。

リストの作り方

Pythonでリストを作る基本的な書き方は、

変数名 = [データ1, データ2, データ3]

です。

たとえば、

numbers = [10, 20, 30]

とすると、3つの数字をまとめて保存できます。

文字列も保存できます。

names = ["山田", "佐藤", "鈴木"]

この場合は、3人の名前を1つのリストにまとめています。

リストのデータを取り出す

リストの中のデータは、位置を指定して取り出すことができます。

たとえば、

fruits = ["りんご", "みかん", "バナナ"]

というリストがあるとします。

最初のデータを取り出すには、

print(fruits[0])

と書きます。

実行結果は、

りんご

です。

なぜ最初が0なのか

初心者が戸惑いやすいのが、

fruits[0]

の「0」です。

多くのプログラミング言語では、配列やリストの番号は0から始まります。

つまり、

fruits[0] → りんご
fruits[1] → みかん
fruits[2] → バナナ

となります。

この番号を「インデックス」と呼びます。

インデックスとは

インデックスとは、リストの中のデータが何番目にあるかを表す番号です。

たとえば、

colors = ["赤", "青", "黄"]

の場合、

0 → 赤
1 → 青
2 → 黄

となります。

そのため、

print(colors[1])

とすると、

青

と表示されます。

リストのデータを変更する

リストの中のデータは、あとから変更できます。

たとえば、

fruits = ["りんご", "みかん", "バナナ"]

の「みかん」を「ぶどう」に変更する場合は、

fruits[1] = "ぶどう"

とします。

その後、

print(fruits)

とすると、

['りんご', 'ぶどう', 'バナナ']

と表示されます。

リストにデータを追加する

リストには、新しいデータを追加することもできます。

Pythonでは append() を使います。

fruits = ["りんご", "みかん"]
fruits.append("バナナ")

実行後のリストは、

['りんご', 'みかん', 'バナナ']

となります。

append() は、

リストの最後にデータを追加する

と覚えるとよいでしょう。

リストからデータを削除する

リストのデータを削除することもできます。

たとえば、

fruits = ["りんご", "みかん", "バナナ"]
fruits.remove("みかん")

とすると、

['りんご', 'バナナ']

となります。

リストの数を調べる

リストに何個のデータが入っているかを調べたい場合は len() を使います。

fruits = ["りんご", "みかん", "バナナ"]

print(len(fruits))

実行結果は、

3

です。

len() は、リストの要素数を調べるときによく使います。

リストと繰り返し処理を組み合わせる

リストは、前回学んだ繰り返し処理と非常に相性がよいです。

たとえば、

scores = [70, 80, 90]

というリストがある場合、

for score in scores:
    print(score)

とすると、

70
80
90

と順番に表示できます。

つまり、

リスト
+
for文

を組み合わせることで、複数のデータを1件ずつ処理できます。

これはプログラミングで非常によく使う考え方です。

合計点を求めてみる

リストと繰り返し処理を使って、テストの合計点を求めてみましょう。

scores = [70, 80, 90]

total = 0

for score in scores:
    total = total + score

print(total)

実行結果は、

240

です。

処理の流れは、

0 + 70
↓
70 + 80
↓
150 + 90
↓
240

となります。

平均点を求めてみる

合計点が求められれば、平均点も計算できます。

scores = [70, 80, 90]

total = 0

for score in scores:
    total = total + score

average = total / len(scores)

print(average)

実行結果は、

80.0

です。

ここでは、

len(scores)

でデータの数を取得しています。

条件分岐と組み合わせる

リストは、条件分岐とも組み合わせることができます。

たとえば、60点以上の点数だけ表示する場合は、

scores = [45, 70, 82, 55, 90]

for score in scores:
    if score >= 60:
        print(score)

実行結果は、

70
82
90

となります。

このプログラムでは、

  1. リストから点数を1つ取り出す
  2. 60点以上か判定する
  3. 条件に合えば表示する
  4. 次の点数を処理する

という流れになっています。

これまで学んだ、

変数・条件分岐・繰り返し処理・リスト

を組み合わせたプログラムです。

文字列をリストに入れる

リストには数字だけでなく、文字列も入れられます。

names = ["山田", "佐藤", "鈴木"]

for name in names:
    print(name)

実行結果は、

山田
佐藤
鈴木

となります。

数字と文字列を一緒に入れられる?

Pythonのリストには、異なる種類のデータを入れることもできます。

たとえば、

data = ["山田", 16, True]

という書き方もできます。

このリストには、

文字列
数値
真偽値

が入っています。

ただし、初心者のうちは、同じ種類のデータをまとめて使うことが多いと考えておけばよいでしょう。

空のリストとは

最初はデータを入れず、あとから追加することもできます。

空のリストは、

items = []

と書きます。

その後、

items.append("ペン")
items.append("ノート")
items.append("消しゴム")

とすると、

['ペン', 'ノート', '消しゴム']

となります。

実際のWebサイトでもリストは使われる

配列やリストの考え方は、実際のWebシステムでも非常によく使われています。

たとえば、商品一覧画面を考えてみましょう。

商品A
商品B
商品C
商品D

という商品データがあれば、それを1件ずつ取り出して画面に表示します。

考え方としては、

products = ["商品A", "商品B", "商品C", "商品D"]

for product in products:
    print(product)

と同じです。

実際のシステムでは、データベースから取得した複数の商品情報を繰り返し処理して表示することがよくあります。

ゲームでもリストは使われる

ゲームでも配列やリストはよく利用されます。

たとえば、

enemies = ["スライム", "ゴブリン", "ドラゴン"]

のように敵をまとめて管理できます。

for enemy in enemies:
    print(enemy)

とすれば、すべての敵を順番に処理できます。

他にも、

  • プレイヤーの持ち物
  • 敵の一覧
  • アイテム一覧
  • ステージ一覧
  • 得点履歴

などを管理するときに配列やリストが使われます。

二次元リストとは

リストの中にリストを入れることもできます。

たとえば、

scores = [
    [70, 80, 90],
    [60, 75, 85],
    [90, 95, 100]
]

のような形です。

これは表のようなデータを扱う場合に使われます。

イメージとしては、

70  80  90
60  75  85
90  95 100

のような形です。

このような構造を「二次元配列」や「二次元リスト」と呼ぶことがあります。

インデックスエラーに注意

リストを使うときに初心者がよく遭遇するのが、存在しない番号を指定するエラーです。

たとえば、

fruits = ["りんご", "みかん", "バナナ"]

print(fruits[3])

とするとエラーになります。

このリストにあるインデックスは、

0
1
2

までだからです。

データが3個あるからといって、

fruits[3]

が使えるわけではない点に注意しましょう。

リストでよく使う操作

Pythonのリストでよく使う操作をまとめると、次のようになります。

操作書き方
リストを作る[10, 20, 30]
データを取得list[0]
データを変更list[0] = 100
データを追加append()
データを削除remove()
データ数を取得len()
順番に処理for

最初から全部暗記する必要はありません。

実際にプログラムを書きながら少しずつ覚えていきましょう。

配列・リストを理解するコツ

配列やリストを理解するポイントは、

複数の箱を1つにまとめて管理する

と考えることです。

普通の変数が、

1つの箱

だとすると、リストは、

複数の箱が並んでいるもの

と考えられます。

たとえば、

scores = [70, 80, 90]

なら、

scores

[0] 70
[1] 80
[2] 90

というイメージです。

この考え方を理解すると、リストが分かりやすくなります。

練習問題

最後に簡単な練習問題をやってみましょう。

次のリストがあります。

numbers = [10, 20, 30, 40, 50]

for文を使って、すべての数字を表示してください。

解答例

numbers = [10, 20, 30, 40, 50]

for number in numbers:
    print(number)

実行結果は、

10
20
30
40
50

です。

次に、30以上の数字だけを表示してみましょう。

解答例

numbers = [10, 20, 30, 40, 50]

for number in numbers:
    if number >= 30:
        print(number)

実行結果は、

30
40
50

となります。

ここでは、

リスト + 繰り返し処理 + 条件分岐

を組み合わせています。

まとめ

配列・リストとは、

複数のデータをまとめて扱うための仕組み

です。

Pythonでは、主に「リスト」を使います。

基本的な書き方は、

scores = [70, 80, 90]

です。

リストを使うことで、

  • 複数のデータをまとめる
  • データを取り出す
  • データを変更する
  • データを追加する
  • データを削除する
  • for文で順番に処理する

といったことができます。

特に重要なのが、

リストと繰り返し処理を組み合わせること

です。

for score in scores:
    print(score)

のような処理は、実際のプログラムでも非常によく使われます。

これまで学んできた、

変数 → 条件分岐 → 繰り返し処理 → 配列・リスト

が理解できると、かなりプログラムらしい処理を書けるようになります。

次は、複数の処理をまとめて再利用するための「関数」について学ぶと、さらにプログラミングの理解が深まります。