基礎から学ぶPython入門 90日コース | Python基礎 - Day 8:リスト

Python 90日で身につけるPython
スポンサーリンク
スポンサーリンク
  1. Day 8:リスト ― 「複数の値を“ひとまとめ”にして扱うための箱」
  2. リスト作成 ― 「値を角括弧で並べて“ひとまとめ”にする」
  3. 要素取得 ― 「インデックスで“何番目か”を指定して取り出す」
  4. 追加 ― 「リストの末尾や途中に新しい要素を入れる」
    1. append() ― 「末尾に追加する」
    2. insert() ― 「指定した位置に挿入する」
  5. 削除 ― 「いらなくなった要素をリストから取り除く」
    1. remove() ― 「値を指定して削除する」
    2. pop() ― 「インデックスを指定して取り出しつつ削除する」
  6. 更新 ― 「既存の要素の値を変更する」
  7. sort() ― 「リストの要素を並び替える」
  8. Day 8のまとめと次へのつながり
  9. Day 8:リストで「買い物リスト管理ツール」を作る
  10. 買い物リストの基本 ― リストで「品目の一覧」を持つ
  11. 要素取得 ― 「何番目の品目か」を指定して取り出す
  12. 追加 ― 新しい品目をリストに加える(append / insert)
    1. append() ― 「リストの末尾に品目を追加する」
    2. insert() ― 「特定の位置に品目を挿入する」
  13. 削除 ― いらなくなった品目をリストから取り除く(remove / pop)
    1. remove() ― 「品目名を指定して削除する」
    2. pop() ― 「インデックスを指定して取り出しつつ削除する」
  14. 更新 ― 既存の品目を別の品目に変更する
  15. sort() ― 買い物リストを並び替える
  16. 簡易「買い物リスト管理ツール」のサンプルコード
  17. Day 8(制作編)のまとめ

Day 8:リスト ― 「複数の値を“ひとまとめ”にして扱うための箱」

Day 8では、「リスト」を扱います。 リストは、複数の値を順番付きでまとめて保存できる、とても重要なデータ構造です。 ユーザー一覧、ログの行、商品リスト、IDの集合など、現実世界の「一覧」をそのままコードに持ち込むイメージで使います。 ここでは、リストの作成から、要素の取得・追加・削除・更新、そして append()insert()remove()pop()sort() といった代表的なメソッドを、ステップバイステップで見ていきます。

リスト作成 ― 「値を角括弧で並べて“ひとまとめ”にする」

リストは、角括弧 [] を使って作成します。 中に値をカンマ区切りで並べるだけです。

# リストの基本的な作成

numbers = [1, 2, 3, 4, 5]          # 整数のリスト
names = ["alice", "bob", "carol"]  # 文字列のリスト
mixed = [1, "two", 3.0, True]      # 型が混ざったリスト(PythonではOK)

print(numbers)
print(names)
print(mixed)
Python

空のリストも作れます。

# 空のリスト

empty_list = []  # 何も入っていないリスト
print(empty_list)  # []
Python

リストは、「順番がある複数の値」を扱うときの基本ツールです。 セキュリティの観点では、「ブラックリスト」「ホワイトリスト」「監視対象のIP一覧」などをリストで持つことがよくあります。

要素取得 ― 「インデックスで“何番目か”を指定して取り出す」

リストの要素は、「インデックス(何番目か)」で取り出します。 Pythonでは、先頭が0番目です。

# 要素の取得

names = ["alice", "bob", "carol"]

print(names[0])  # 0番目 → 'alice'
print(names[1])  # 1番目 → 'bob'
print(names[2])  # 2番目 → 'carol'
Python

インデックスが範囲外だとエラーになります。

# 次の行はエラーになります(インデックス3は存在しない)
# print(names[3])
Python

負のインデックスを使うと、後ろから数えることもできます。

# 負のインデックス

print(names[-1])  # 最後の要素 → 'carol'
print(names[-2])  # 後ろから2番目 → 'bob'
Python

要素取得は、「特定の位置の値をチェックしたい」「何番目のユーザーかを知りたい」といった場面で使います。

追加 ― 「リストの末尾や途中に新しい要素を入れる」

リストに要素を追加する方法はいくつかありますが、代表的なのは append()insert() です。

append() ― 「末尾に追加する」

append() は、「リストの末尾に新しい要素を追加する」メソッドです。

# append()で末尾に追加する

users = ["alice", "bob"]

users.append("carol")  # 末尾に'carol'を追加

print(users)  # ['alice', 'bob', 'carol']
Python

append() は、「新しいデータが来たらリストの最後に足していく」という場面でよく使います。 ログの行を順番に追加する、監視対象を増やす、といったイメージです。

insert() ― 「指定した位置に挿入する」

insert() は、「指定したインデックスの位置に新しい要素を挿入する」メソッドです。

# insert()で途中に挿入する

users = ["alice", "bob", "carol"]

users.insert(1, "admin")  # インデックス1の位置に'admin'を挿入

print(users)  # ['alice', 'admin', 'bob', 'carol']
Python

ここでは、「0: alice, 1: bob, 2: carol」という状態から、 インデックス1の位置に "admin" を挿入して、「alice, admin, bob, carol」という順番になっています。

insert() は、「特定の位置に優先度の高いものを入れたい」「並び順を意識して挿入したい」ときに使います。

削除 ― 「いらなくなった要素をリストから取り除く」

リストから要素を削除する方法もいくつかあります。 代表的なのは、remove()pop()、そして del 文です。

remove() ― 「値を指定して削除する」

remove() は、「指定した値と一致する最初の要素を削除する」メソッドです。

# remove()で値を指定して削除する

users = ["alice", "bob", "carol", "bob"]

users.remove("bob")  # 最初の'bob'を削除

print(users)  # ['alice', 'carol', 'bob']
Python

ここでは、最初に出てきた "bob" だけが削除され、2つ目の "bob" は残っています。

remove() は、「特定のユーザー名やIDをリストから外したい」ときに使います。 ただし、「その値が存在しない場合」はエラーになるので注意が必要です。

# 次の行はエラーになります('dave'はリストに存在しない)
# users.remove("dave")
Python

pop() ― 「インデックスを指定して取り出しつつ削除する」

pop() は、「指定したインデックスの要素を取り出し、その要素をリストから削除する」メソッドです。 インデックスを省略すると、末尾の要素が対象になります。

# pop()で末尾を取り出して削除する

users = ["alice", "bob", "carol"]

last_user = users.pop()  # 末尾の要素を取り出して削除

print("取り出したユーザー:", last_user)  # 'carol'
print("残ったリスト:", users)            # ['alice', 'bob']
Python

インデックスを指定することもできます。

# pop()でインデックスを指定する

users = ["alice", "bob", "carol"]

second_user = users.pop(1)  # インデックス1の要素('bob')を取り出して削除

print("取り出したユーザー:", second_user)  # 'bob'
print("残ったリスト:", users)              # ['alice', 'carol']
Python

pop() は、「取り出した値を使いつつ、リストからも消したい」ときに便利です。 例えば、「キュー(先に入れたものから取り出す)」や「スタック(最後に入れたものから取り出す)」のような構造を作るときに使います。

更新 ― 「既存の要素の値を変更する」

リストの要素は、「インデックスを指定して新しい値を代入する」ことで更新できます。

# 要素の更新

users = ["alice", "bob", "carol"]

users[1] = "admin"  # インデックス1の要素を'admin'に変更

print(users)  # ['alice', 'admin', 'carol']
Python

ここでは、「bob」が「admin」に置き換わっています。

更新は、「ユーザーの状態を変える」「フラグを立てる」「設定値を変更する」といった場面で使います。

セキュリティ寄りのイメージとして、「ユーザーのロール(役割)を変更する」例を見てみます。

# ユーザーのロールを更新するイメージ

roles = ["user", "user", "admin"]  # 各ユーザーのロール

# 2番目のユーザーを管理者に昇格させる
roles[1] = "admin"

print(roles)  # ['user', 'admin', 'admin']
Python

sort() ― 「リストの要素を並び替える」

sort() は、「リストの要素を昇順(小さい順)に並び替える」メソッドです。 文字列の場合は、辞書順(アルファベット順)になります。

# sort()の基本(数値)

numbers = [5, 2, 9, 1]

numbers.sort()  # 昇順に並び替える

print(numbers)  # [1, 2, 5, 9]
Python

文字列の場合は次のようになります。

# sort()の基本(文字列)

names = ["carol", "alice", "bob"]

names.sort()

print(names)  # ['alice', 'bob', 'carol']
Python

降順(大きい順)に並び替えたい場合は、reverse=True を指定します。

# 降順に並び替える

numbers = [5, 2, 9, 1]

numbers.sort(reverse=True)

print(numbers)  # [9, 5, 2, 1]
Python

sort() は、「ログを時刻順に並べる」「スコアを高い順に並べる」「ユーザー名をアルファベット順に並べる」といった場面で役立ちます。

セキュリティ寄りのイメージとして、「失敗回数の多いユーザー順に並べる」例を見てみます(少し応用ですがイメージとして)。

# 失敗回数の多い順にユーザーを並べるイメージ

users = [
    {"name": "alice", "failed_login": 1},
    {"name": "bob", "failed_login": 4},
    {"name": "carol", "failed_login": 2},
]

# failed_loginの値を基準にソートする
users.sort(key=lambda u: u["failed_login"], reverse=True)

for user in users:
    print(f"{user['name']} - 失敗回数: {user['failed_login']}")
Python

ここでは、key 引数に「どの値を基準に並び替えるか」を指定しています。 Day 8では「sort()で並び替えられる」という基本だけ押さえておけば十分ですが、将来的にこうした応用もできるようになります。

Day 8のまとめと次へのつながり

Day 8では、

  • リスト作成:[] で複数の値をひとまとめにする
  • 要素取得:インデックス(0から始まる番号)で特定の要素を取り出す
  • 追加:append() で末尾に、insert() で指定位置に挿入する
  • 削除:remove() で値を指定して、pop() でインデックスを指定して取り出しつつ削除する
  • 更新:インデックスに代入して既存の要素を変更する
  • sort():リストの要素を並び替える

を学びました。

ここまで理解できると、「複数のデータをまとめて持ち、追加・削除・更新・並び替えを自由に行う」という、プログラムの“データ管理力”が一気に上がります。 次のステップでは、リストとfor文・条件分岐を組み合わせて、「特定の条件に当てはまるものだけ抽出する」「危険なものだけ警告する」といった、より実用的な処理を書いていきます。

Day 8で特に重要なのは、「リストは“順番付きの箱”であり、append()insert()remove()pop()sort()はその箱の中身を整理するための道具だ」という感覚です。 この感覚が身につくと、セキュリティ的にも「ブラックリストの管理」「ログの整理」「監視対象の一覧管理」を、自然と安全に設計できるようになっていきます。


Day 8:リストで「買い物リスト管理ツール」を作る

Day 8の制作編では、「買い物リスト」を題材にして、リストの基本操作を実際のツールとして形にしていきます。 買い物リストは、「複数の品目をまとめて管理する」という意味で、リストの練習にぴったりの題材です。 ここでは、リスト作成・要素取得・追加・削除・更新、そして append()insert()remove()pop()sort() を、 すべて「買い物リスト管理ツール」の中で使っていく流れをステップバイステップで説明します。

買い物リストの基本 ― リストで「品目の一覧」を持つ

まずは、シンプルな買い物リストをリストで作ってみます。

# 買い物リストの基本的な作成

shopping_list = ["牛乳", "パン", "卵"]  # 最初から入っている品目

print("現在の買い物リスト:", shopping_list)
Python

ここでは、shopping_list が「買い物リスト全体」を表すリストです。 リストの中には、「牛乳」「パン」「卵」という3つの文字列が入っています。

リストは、「順番付きの複数の値」を扱うための箱です。 買い物リストのような「一覧」をそのままコードに持ち込むイメージで使うと分かりやすくなります。

要素取得 ― 「何番目の品目か」を指定して取り出す

リストの要素は、「インデックス(何番目か)」で取り出します。 Pythonでは、先頭が0番目です。

# 要素の取得(インデックスで指定)

print("1番目の品目:", shopping_list[0])  # '牛乳'
print("2番目の品目:", shopping_list[1])  # 'パン'
print("3番目の品目:", shopping_list[2])  # '卵'
Python

インデックスが範囲外だとエラーになるので、 「リストの長さ」を意識することも大事です。

# リストの長さを確認する

print("買い物リストの品目数:", len(shopping_list))  # 3
Python

このように、「何番目の品目か」をインデックスで指定することで、 特定の品目を取り出したり、後で更新したりできます。

追加 ― 新しい品目をリストに加える(append / insert)

買い物リストに新しい品目を追加する場面はよくあります。 ここでは、末尾に追加する append() と、途中に挿入する insert() を使います。

append() ― 「リストの末尾に品目を追加する」

# append()で末尾に品目を追加する

shopping_list.append("バター")  # リストの最後に"バター"を追加

print("バター追加後の買い物リスト:", shopping_list)
Python

append() は、「新しい品目が思いついたら、とりあえずリストの最後に足していく」という使い方に向いています。 ログや履歴のように「後から追加されるもの」にもよく使われます。

insert() ― 「特定の位置に品目を挿入する」

# insert()で途中に品目を挿入する

shopping_list.insert(1, "チーズ")  # インデックス1の位置に"チーズ"を挿入

print("チーズ挿入後の買い物リスト:", shopping_list)
Python

ここでは、「0: 牛乳, 1: パン, 2: 卵, 3: バター」という状態から、 インデックス1の位置に「チーズ」を挿入して、「牛乳, チーズ, パン, 卵, バター」という順番になっています。

insert() は、「優先度の高いものを前の方に入れたい」「並び順を意識して挿入したい」ときに便利です。

削除 ― いらなくなった品目をリストから取り除く(remove / pop)

買い物リストから品目を削除する場面もよくあります。 ここでは、値を指定して削除する remove() と、インデックスを指定して取り出しつつ削除する pop() を使います。

remove() ― 「品目名を指定して削除する」

# remove()で品目名を指定して削除する

shopping_list.remove("卵")  # 最初に見つかった"卵"を削除

print("卵削除後の買い物リスト:", shopping_list)
Python

remove() は、「この品目はいらない」と決めたときに、その名前を指定して削除するのに向いています。 ただし、「指定した品目がリストに存在しない場合」はエラーになるので注意が必要です。

# 次の行はエラーになります("魚"はリストに存在しない)
# shopping_list.remove("魚")
Python

実際のツールでは、「削除前に存在チェックをする」ようにすると安全です。

pop() ― 「インデックスを指定して取り出しつつ削除する」

# pop()でインデックスを指定して削除する

removed_item = shopping_list.pop(0)  # 0番目の品目を取り出して削除

print("削除された品目:", removed_item)
print("削除後の買い物リスト:", shopping_list)
Python

pop() は、「取り出した品目を何かに使いつつ、リストからも消したい」ときに便利です。 例えば、「買い終わった品目をログに残す」「処理済みのタスクを取り出す」といった場面で使えます。

インデックスを省略すると、末尾の要素が対象になります。

last_item = shopping_list.pop()  # 最後の品目を取り出して削除
print("最後に削除された品目:", last_item)
print("現在の買い物リスト:", shopping_list)
Python

更新 ― 既存の品目を別の品目に変更する

リストの要素は、「インデックスを指定して新しい値を代入する」ことで更新できます。 例えば、「パンを全粒粉パンに変更する」といった操作です。

# 要素の更新(品目の変更)

shopping_list = ["牛乳", "パン", "バター"]  # 例としてリストを再定義

print("更新前の買い物リスト:", shopping_list)

shopping_list[1] = "全粒粉パン"  # インデックス1の品目を変更

print("更新後の買い物リスト:", shopping_list)
Python

更新は、「品目の内容が変わった」「より具体的な名前にしたい」といった場面で使います。 インデックスを間違えると意図しない品目が変わってしまうので、 「リストの中身とインデックスの対応」を意識することが大事です。

sort() ― 買い物リストを並び替える

sort() は、「リストの要素を昇順(小さい順)に並び替える」メソッドです。 文字列の場合は、辞書順(アルファベット順や五十音順に近い順)になります。

# sort()で買い物リストを並び替える

shopping_list = ["牛乳", "パン", "バター", "チーズ"]

print("並び替え前の買い物リスト:", shopping_list)

shopping_list.sort()  # 昇順に並び替える

print("並び替え後の買い物リスト:", shopping_list)
Python

sort() を使うと、「買い物リストを見やすく整理する」「同じ種類のものを近くにまとめる」といったことができます。 降順(逆順)に並び替えたい場合は、reverse=True を指定します。

shopping_list.sort(reverse=True)
print("逆順に並び替えた買い物リスト:", shopping_list)
Python

簡易「買い物リスト管理ツール」のサンプルコード

ここまでの内容をまとめて、 「買い物リスト管理ツール」の簡易版サンプルコードを示します。 コメント付きで、初心者の方にも読みやすい形にしています。

# 買い物リスト管理ツール(簡易版)

# 最初の買い物リスト
shopping_list = ["牛乳", "パン", "卵"]

# 現在のリストを表示する関数
def show_list():
    print("現在の買い物リスト:")
    # インデックスと品目を一緒に表示します
    for index, item in enumerate(shopping_list):
        print(f"{index}: {item}")
    print("-" * 20)  # 区切り線

# 品目を追加する関数
def add_item(item, position=None):
    """
    item: 追加したい品目名
    position: 追加したい位置(Noneの場合は末尾に追加)
    """
    if position is None:
        shopping_list.append(item)  # 末尾に追加
    else:
        shopping_list.insert(position, item)  # 指定位置に挿入
    print(f"品目 '{item}' を追加しました。")

# 品目を削除する関数
def remove_item_by_name(item):
    """
    item: 削除したい品目名
    """
    if item in shopping_list:
        shopping_list.remove(item)
        print(f"品目 '{item}' を削除しました。")
    else:
        print(f"品目 '{item}' はリストに存在しません。")

def remove_item_by_index(index):
    """
    index: 削除したいインデックス
    """
    if 0 <= index < len(shopping_list):
        removed = shopping_list.pop(index)
        print(f"インデックス {index} の品目 '{removed}' を削除しました。")
    else:
        print("指定されたインデックスは範囲外です。")

# 品目を更新する関数
def update_item(index, new_item):
    """
    index: 更新したいインデックス
    new_item: 新しい品目名
    """
    if 0 <= index < len(shopping_list):
        old_item = shopping_list[index]
        shopping_list[index] = new_item
        print(f"品目 '{old_item}' を '{new_item}' に更新しました。")
    else:
        print("指定されたインデックスは範囲外です。")

# リストを並び替える関数
def sort_list(reverse=False):
    """
    reverse: Trueなら逆順、Falseなら昇順
    """
    shopping_list.sort(reverse=reverse)
    if reverse:
        print("買い物リストを逆順に並び替えました。")
    else:
        print("買い物リストを昇順に並び替えました。")

# 実際に操作してみる例
show_list()

add_item("バター")          # 末尾に追加
add_item("チーズ", 1)       # インデックス1に挿入
show_list()

remove_item_by_name("卵")   # 名前で削除
remove_item_by_index(0)     # インデックスで削除
show_list()

update_item(1, "全粒粉パン") # 品目を更新
show_list()

sort_list()                 # 昇順に並び替え
show_list()
Python

このサンプルでは、

  • リストを「買い物リスト」として扱い、 append()insert()remove()pop()sort() をすべて実際の操作に結びつけています。
  • 関数を使って、「表示」「追加」「削除」「更新」「並び替え」を分けて実装し、 コードの見通しを良くしています。
  • インデックスの範囲チェックや、品目の存在チェックを入れることで、 エラーや意図しない操作を防ぐようにしています。

Day 8(制作編)のまとめ

Day 8の制作編では、「買い物リスト管理ツール」を通して、

リストで「品目の一覧」を持つ インデックスで要素を取得する append()insert()で品目を追加する remove()pop()で品目を削除する インデックスへの代入で品目を更新する sort()でリストを整理する

という一連の流れを体験していただきました。

ここまで来ると、「リストはただの配列ではなく、“現実の一覧をそのままコードにしたもの”」として扱えるようになっているはずです。 この感覚を土台に、今後は「タスク管理」「ログ一覧」「ユーザーリスト」など、 より複雑なデータもリストで安全に管理していくことができるようになります。

タイトルとURLをコピーしました