- Day 8:リスト ― 「複数の値を“ひとまとめ”にして扱うための箱」
- リスト作成 ― 「値を角括弧で並べて“ひとまとめ”にする」
- 要素取得 ― 「インデックスで“何番目か”を指定して取り出す」
- 追加 ― 「リストの末尾や途中に新しい要素を入れる」
- 削除 ― 「いらなくなった要素をリストから取り除く」
- 更新 ― 「既存の要素の値を変更する」
- sort() ― 「リストの要素を並び替える」
- Day 8のまとめと次へのつながり
- Day 8:リストで「買い物リスト管理ツール」を作る
- 買い物リストの基本 ― リストで「品目の一覧」を持つ
- 要素取得 ― 「何番目の品目か」を指定して取り出す
- 追加 ― 新しい品目をリストに加える(append / insert)
- 削除 ― いらなくなった品目をリストから取り除く(remove / pop)
- 更新 ― 既存の品目を別の品目に変更する
- sort() ― 買い物リストを並び替える
- 簡易「買い物リスト管理ツール」のサンプルコード
- 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']
Pythonappend() は、「新しいデータが来たらリストの最後に足していく」という場面でよく使います。 ログの行を順番に追加する、監視対象を増やす、といったイメージです。
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")
Pythonpop() ― 「インデックスを指定して取り出しつつ削除する」
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']
Pythonpop() は、「取り出した値を使いつつ、リストからも消したい」ときに便利です。 例えば、「キュー(先に入れたものから取り出す)」や「スタック(最後に入れたものから取り出す)」のような構造を作るときに使います。
更新 ― 「既存の要素の値を変更する」
リストの要素は、「インデックスを指定して新しい値を代入する」ことで更新できます。
# 要素の更新
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']
Pythonsort() ― 「リストの要素を並び替える」
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]
Pythonsort() は、「ログを時刻順に並べる」「スコアを高い順に並べる」「ユーザー名をアルファベット順に並べる」といった場面で役立ちます。
セキュリティ寄りのイメージとして、「失敗回数の多いユーザー順に並べる」例を見てみます(少し応用ですがイメージとして)。
# 失敗回数の多い順にユーザーを並べるイメージ
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)
Pythonappend() は、「新しい品目が思いついたら、とりあえずリストの最後に足していく」という使い方に向いています。 ログや履歴のように「後から追加されるもの」にもよく使われます。
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)
Pythonremove() は、「この品目はいらない」と決めたときに、その名前を指定して削除するのに向いています。 ただし、「指定した品目がリストに存在しない場合」はエラーになるので注意が必要です。
# 次の行はエラーになります("魚"はリストに存在しない)
# shopping_list.remove("魚")
Python実際のツールでは、「削除前に存在チェックをする」ようにすると安全です。
pop() ― 「インデックスを指定して取り出しつつ削除する」
# pop()でインデックスを指定して削除する
removed_item = shopping_list.pop(0) # 0番目の品目を取り出して削除
print("削除された品目:", removed_item)
print("削除後の買い物リスト:", shopping_list)
Pythonpop() は、「取り出した品目を何かに使いつつ、リストからも消したい」ときに便利です。 例えば、「買い終わった品目をログに残す」「処理済みのタスクを取り出す」といった場面で使えます。
インデックスを省略すると、末尾の要素が対象になります。
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)
Pythonsort() を使うと、「買い物リストを見やすく整理する」「同じ種類のものを近くにまとめる」といったことができます。 降順(逆順)に並び替えたい場合は、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()でリストを整理する
という一連の流れを体験していただきました。
ここまで来ると、「リストはただの配列ではなく、“現実の一覧をそのままコードにしたもの”」として扱えるようになっているはずです。 この感覚を土台に、今後は「タスク管理」「ログ一覧」「ユーザーリスト」など、 より複雑なデータもリストで安全に管理していくことができるようになります。
