プログラミング

Step 7: 「リスト」の基本(複数のデータを一つにまとめる)

Step 7: 「リスト」の基本(複数のデータを一つにまとめる)

概要

フリーランスエンジニア スリーネクスト

Pythonプログラミングの核心である「リスト」の基本操作を、初学者向けに図解を交えて解説します。リストの作成方法にはじまり、インデックスを用いた要素へのアクセス・変更・追加(append)・削除(del)といった四則演算ならぬ「基本四則操作」を丁寧に説明。

さらに、範囲指定で要素をまとめて取り出すスライスや、for文と組み合わせた繰り返し処理といった実用的なテクニックも紹介し、データ操作の基礎を固めることを目的としています。

目次
「ゼロから始めるPython学習」各ステップのタイトル案
ゼロから始めるPython学習 STEP20目次

プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!

続きを見る

はじめに

プログラミングをしていると、「たくさんのデータを一つにまとめて管理したい」という場面が頻繁に訪れます。例えば、クラスの生徒名簿、買い物リスト、テストの点数一覧などです。これら複数のデータを、一つの変数で扱えるようにするのが今回学ぶ**リスト(list)**です。リストは、Pythonプログラミングの基本中の基本であり、非常に強力な武器になります。さっそく、その使い方をマスターしていきましょう!

リストとは? なぜ必要なの?

もしリストがなかったら、どうなるでしょうか? 例えば、5人の生徒のテストの点数を管理したい場合、次のように5つの変数を用意する必要があります。

score1 = 85
score2 = 92
score3 = 78
score4 = 88
score5 = 95

これでは、生徒が50人、100人と増えたときに変数を大量に作らなければならず、管理がとても大変です。

そこで登場するのがリストです。リストを使えば、これらの点数をscoresという一つの変数にまとめて格納できます。

scores = [85, 92, 78, 88, 95]

このように、たくさんのデータを一つの「箱」に順番に詰めて管理できるのがリストの最大のメリットです。データの集まりに名前を付け、スッキリと整理できるのです。

これを図でイメージしてみましょう。リストという大きな箱(変数scores)の中に、それぞれのデータが順番に並んで入っている様子です。

graph LR
    subgraph "リスト: scores"
        A[85]
        B[92]
        C[78]
        D[88]
        E[95]
    end

    Var("変数 scores") --> A
    Var --> B
    Var --> C
    Var --> D
    Var --> E

リストの作り方

リストの作成は非常に簡単です。角括弧 [] でデータを囲み、各データをカンマ , で区切ります。

# 数値のリスト
numbers = [1, 2, 3, 4, 5]

# 文字列のリスト
fruits = ["apple", "banana", "cherry"]

# 異なるデータ型を混ぜることも可能
mixed_list = [10, "hello", 3.14, True]

# 何も入っていない空のリスト
empty_list = []

このように、数値だけでなく文字列や、さらには異なるデータ型(整数、文字列、浮動小数点数、真偽値など)を一つのリストに混在させることもできます。


リストの基本操作

リストは、単にデータを入れるだけの箱ではありません。中のデータを取り出したり、変更したり、追加・削除したりと、様々な操作が可能です。ここでは最も基本的な操作を4つ見ていきましょう。

要素へのアクセス(取り出す)

リストの中の特定のデータを取り出すには、**インデックス(index)**を使います。インデックスとは、リスト内の各データに割り振られた「住所」のような通し番号です。

重要な注意点として、インデックスは 0 から始まります。

graph LR
    subgraph "fruits リスト"
        direction LR
        0("インデックス: 0") --- 1("インデックス: 1") --- 2("インデックス: 2")
        subgraph "要素"
            A["apple"] --- B["banana"] --- C["cherry"]
        end
        0 --> A
        1 --> B
        2 --> C
    end

例えば、fruits リストの _"banana"_ を取り出したい場合、インデックスは 1 になります。コードでは次のように書きます。

fruits = ["apple", "banana", "cherry"]

# 0番目の要素にアクセス
print(fruits[0])  # 出力: apple

# 1番目の要素にアクセス
print(fruits[1])  # 出力: banana

このように リスト名[インデックス番号] と書くことで、目的のデータ(要素)をピンポイントで指定できます。

要素の変更(書き換える)

一度作成したリストの要素を、後から別の値に書き換えることもできます。インデックスを使って場所を指定し、代入演算子 = を使って新しい値を入れます。

fruits = ["apple", "banana", "cherry"]
print("変更前:", fruits)  # 出力: 変更前: ['apple', 'banana', 'cherry']

# インデックス1の要素を "orange" に変更
fruits[1] = "orange"
print("変更後:", fruits)  # 出力: 変更後: ['apple', 'orange', 'cherry']

この操作を図で見てみましょう。"banana" が入っていた場所に "orange" が上書きされるイメージです。

graph TD
    subgraph "変更前: fruits"
        A["apple"] --> B["banana"] --> C["cherry"]
    end

    subgraph "変更後: fruits"
        A2["apple"] --> B2["orange"] --> C2["cherry"]
    end

    B -- "fruits[1] = 'orange'" --> B2

要素の追加

リストの末尾に新しい要素を追加したい場合は、append() というメソッドを使います。メソッドとは、そのデータ型(この場合はリスト)専用の「命令」のようなものです。

Python

fruits = ["apple", "banana", "cherry"]
print("追加前:", fruits)  # 出力: 追加前: ['apple', 'banana', 'cherry']

# "grape" をリストの末尾に追加
fruits.append("grape")
print("追加後:", fruits)  # 出力: 追加後: ['apple', 'banana', 'cherry', 'grape']

append は「付け加える」という意味の英単語です。その名の通り、リストの最後に新しい要素がポンと追加されます。

graph LR
    subgraph "追加前"
        direction LR
        A["apple"] --> B["banana"] --> C["cherry"]
    end
    
    subgraph "append('grape') を実行"
        D(" ")
    end

    subgraph "追加後"
        direction LR
        A2["apple"] --> B2["banana"] --> C2["cherry"] --> D2["grape"]
    end

    C -- " " --> D
    D -- " " --> D2

要素の削除

リストから特定の要素を削除するには、del 文を使います。これもインデックスで削除したい要素を指定します。

fruits = ["apple", "banana", "cherry"]
print("削除前:", fruits)  # 出力: 削除前: ['apple', 'banana', 'cherry']

# インデックス0の要素を削除
del fruits[0]
print("削除後:", fruits)  # 出力: 削除後: ['banana', 'cherry']

del を使うと、指定したインデックスの要素がリストから完全に取り除かれ、後ろにあった要素が前に詰められます。

graph TD
    subgraph "削除前: fruits"
        A["apple (インデックス0)"] --> B["banana (インデックス1)"] --> C["cherry (インデックス2)"]
    end

    subgraph "削除後: fruits"
        B2["banana (新しいインデックス0)"] --> C2["cherry (新しいインデックス1)"]
    end

    A -- "del fruits[0] で削除" --> B2
    B -- "前に詰まる" --> B2
    C -- "前に詰まる" --> C2

知っていると便利!リストの応用機能

基本的な操作に加えて、リストには便利な機能がたくさん用意されています。ここでは特に利用頻度の高いものをいくつか紹介します。

スライス(一部分を切り出す)

リストの中から、複数の要素をまとめて取り出したい場合があります。例えば、「1番目から3番目まで」のように範囲を指定して取り出す機能がスライスです。

スライスは リスト名[開始インデックス:終了インデックス] のように書きます。

ここでも重要な注意点があります。終了インデックスに指定した番号の「手前まで」が取り出されます。

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

# インデックス1から3の手前(インデックス2)までを取り出す
print(numbers[1:3])  # 出力: [10, 20]

# インデックス2から最後までを取り出す(終了を省略)
print(numbers[2:])   # 出力: [20, 30, 40, 50]

# 最初からインデックス4の手前までを取り出す(開始を省略)
print(numbers[:4])    # 出力: [0, 10, 20, 30]
graph LR
    subgraph "numbers リスト"
        direction LR
        idx0("0")---idx1("1")---idx2("2")---idx3("3")---idx4("4")---idx5("5")
        subgraph "要素"
        val0("0")---val1("10")---val2("20")---val3("30")---val4("40")---val5("50")
        end
        idx0 --> val0
        idx1 --> val1
        idx2 --> val2
        idx3 --> val3
        idx4 --> val4
        idx5 --> val5
    end
    subgraph "numbers[1:4] の範囲"
        style B fill:#bbf,stroke:#333,stroke-width:2px
        A( ) -- "インデックス1" --> B(10) -- "インデックス2" --> C(20) -- "インデックス3" --> D(30) -- "インデックス4の手前" --> E( )
    end

リストの長さを調べる (len)

リストにいくつの要素が入っているかを知りたい場合は、len() という関数を使います。len は length(長さ)の略です。

fruits = ["apple", "orange", "grape", "banana"]
print(len(fruits))  # 出力: 4

要素の存在をチェックする (in)

特定の要素がリストの中に含まれているかどうかを調べたい場合は、in 演算子を使います。結果は True(はい、含まれています)か False(いいえ、含まれていません)で返されます。

fruits = ["apple", "orange", "grape", "banana"]

# "grape" はリストに含まれているか?
print("grape" in fruits)  # 出力: True

# "melon" はリストに含まれているか?
print("melon" in fruits)  # 出力: False

これは、条件分岐(if文)と組み合わせて非常によく使われます。

for文と組み合わせて使う

リストの真価は、繰り返し処理(for文)と組み合わせることで発揮されます。リストの要素を一つずつ順番に取り出して、同じ処理を繰り返すことができます。

scores = [85, 92, 78, 88, 95]

# scoresリストから点数を一つずつ取り出して、scoreという変数に入れながら繰り返す
for score in scores:
    print("点数は", score, "点です")

このコードを実行すると、次のような結果が出力されます。

点数は 85 点です
点数は 92 点です
点数は 78 点です
点数は 88 点です
点数は 95 点です

for文を使えば、リストの要素がいくつあっても、すべての要素に対して同じ処理を簡潔に書くことができます。


まとめ

今回は、Pythonにおける最も基本的なデータ構造の一つであるリストについて学びました。

  • リストは、複数のデータを [] の中に , で区切ってまとめることができる。
  • インデックス(0から始まる番号)を使って、特定の要素にアクセス、変更、削除ができる。
  • append() で末尾に要素を追加できる。
  • スライス [:] を使って、一部分を便利に切り出せる。
  • len() で要素数を、in で要素の存在を確認できる。
  • for文と組み合わせることで、全要素に対する繰り返し処理を簡単に書ける。

リストは、これからあなたがPythonで様々なプログラムを作成していく上で、欠かせないパートナーとなります。まずは簡単なリストを作って、今回学んだ操作を色々と試してみてください。実際に手を動かすことが、マスターへの一番の近道です!

目次
「ゼロから始めるPython学習」各ステップのタイトル案
ゼロから始めるPython学習 STEP20目次

プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!

続きを見る

-プログラミング