📋 ステップ4: リストでデータをまとめよう
複数のデータを1つにまとめて管理しよう!
ステップ3では、計算と演算子を学びました。今回は、「複数のデータをまとめて扱う」方法を学びます。これが「リスト」です。
📖 このステップで学ぶこと
・リストとは何か
・リストの作成方法
・インデックス(添え字)でデータを取り出す
・負のインデックス(後ろから数える)
・スライス(部分的に取り出す)
・リストに要素を追加する方法
・リストから要素を削除する方法
・リストの長さと便利な関数
・リストの連結と繰り返し
📦 1. リストとは何か?
今まで学んだ変数は、1つの値しか入れられませんでした。でも、実際のプログラムでは、複数のデータをまとめて扱いたいことがたくさんあります。
🔰 変数1つでは不便な場面
例えば、5人の生徒のテストの点数を管理したい場合を考えましょう。
コード:変数を5つ作る方法
# 5人分の点数を別々の変数で管理
score1 = 85
score2 = 92
score3 = 78
score4 = 95
score5 = 88
print(score1)
print(score2)
print(score3)
print(score4)
print(score5)
※ 画面が小さい場合は、コードブロックを横にスクロールできます
実行結果
85 92 78 95 88
💡 問題点
この方法には、いくつかの問題があります:
問題1:変数名を考えるのが大変
・score1、score2、score3…と考える必要がある
・100人分だと、score1からscore100まで作る?
問題2:まとめて処理できない
・平均を計算するには、5つすべてを足す必要がある
・(score1 + score2 + score3 + score4 + score5) / 5
問題3:人数が変わると困る
・6人目が増えたら、score6を追加する必要がある
・プログラムを大きく書き換えることになる
🔰 リストという「箱のセット」
これらの問題を解決するのが「リスト」です。リストは、複数のデータを1つの変数にまとめて入れられる「箱のセット」のようなものです。
📌 リストのイメージ
リストは、「ロッカー」のようなものだと考えましょう:
1. 複数の小部屋がある
・各小部屋に1つずつデータを入れられます
・例:[85, 92, 78, 95, 88]
2. 各小部屋には番号がある
・0番、1番、2番…という番号で区別します
・この番号を「インデックス」と呼びます
3. 1つの名前で全体を扱える
・scoresという1つの名前で、5つの点数をまとめて管理できます
4. 後から増やしたり減らしたりできる
・データを追加したり、削除したりできます
📘 リストを作ってみよう
リストは角カッコ [ ]で作ります。データはカンマ(,)で区切ります。
📌 リストを作る書き方
変数名 = [値1, 値2, 値3, ...]
ポイント:
・[ ](角カッコ)で囲む
・値と値の間に,(カンマ)を入れる
・最後の値の後ろにカンマは不要
コード:リストを作る
# 数値のリスト
scores = [85, 92, 78, 95, 88]
print(scores)
# 文字列のリスト
fruits = ["りんご", "バナナ", "オレンジ"]
print(fruits)
# 空のリスト
empty_list = []
print(empty_list)
実行結果
[85, 92, 78, 95, 88] ['りんご', 'バナナ', 'オレンジ'] []
💡 コードの解説
scores = [85, 92, 78, 95, 88]
・scoresという名前のリストを作ります
・5つの数値(85、92、78、95、88)が入っています
・[ ]で囲み、,で区切ります
fruits = [“りんご”, “バナナ”, “オレンジ”]
・文字列もリストに入れられます
・各文字列は” “(ダブルクォーテーション)で囲みます
empty_list = []
・何も入っていない空のリストも作れます
・後からデータを追加していく時に使います
📝 いろいろな種類のリスト
コード:リストのバリエーション
# 整数のリスト
ages = [15, 16, 14, 17, 15]
print(ages)
# 小数のリスト
heights = [165.5, 170.2, 158.3, 172.8]
print(heights)
# 混在も可能(ただし、あまり推奨されない)
mixed = [10, "こんにちは", True, 3.14]
print(mixed)
実行結果
[15, 16, 14, 17, 15] [165.5, 170.2, 158.3, 172.8] [10, 'こんにちは', True, 3.14]
💡 リストに入れられるもの
リストには、どんな型のデータでも入れられます:
・整数(int)
・小数(float)
・文字列(str)
・真偽値(bool)
・さらにリストの中にリストも入れられます(後で学びます)
推奨: 通常は、同じ種類のデータをまとめるのが良い習慣です
・✅ [85, 92, 78](すべて整数)
・❌ [85, “92”, True](バラバラで管理しにくい)
🔢 2. インデックス(添え字)
リストに入っているデータは、インデックス(添え字)という番号で取り出せます。
🔰 インデックスとは
🔑 超重要!インデックスは0から始まる
プログラミングでは、最初の要素が0番目です。
・1番目ではなく、0番目から数えます
・これは慣れるまで間違えやすいポイントです
・ほとんどのプログラミング言語で共通のルールです
📌 インデックスの仕組み
| 要素 | “りんご” | “バナナ” | “オレンジ” | “いちご” |
| インデックス | 0 | 1 | 2 | 3 |
0番目が最初、1番目が2番目、2番目が3番目…という数え方です。
📘 インデックスで要素を取り出す
インデックスを使うには、リスト名[インデックス]と書きます。
📌 インデックスの書き方
リスト名[インデックス番号]
ポイント:
・[ ](角カッコ)の中にインデックス番号を書く
・インデックスは0から始まる
コード:インデックスで取り出す
# フルーツのリスト
fruits = ["りんご", "バナナ", "オレンジ", "いちご"]
# インデックスで取り出す
print(fruits[0]) # 0番目(最初)
print(fruits[1]) # 1番目
print(fruits[2]) # 2番目
print(fruits[3]) # 3番目(最後)
実行結果
りんご バナナ オレンジ いちご
💡 コードの解説
fruits[0]
・fruitsリストの0番目の要素を取り出します
・0番目は「りんご」です
・[ ]の中に0と書きます
fruits[1]
・fruitsリストの1番目の要素を取り出します
・1番目は「バナナ」です(2番目ではありません!)
fruits[3]
・fruitsリストの3番目の要素を取り出します
・要素は4つあるので、最後は3番目です(0, 1, 2, 3)
📝 取り出した要素を変数に保存する
コード:要素を変数に保存
fruits = ["りんご", "バナナ", "オレンジ"]
# 最初の要素を取り出して変数に保存
first_fruit = fruits[0]
print(first_fruit)
# 2番目の要素を取り出して変数に保存
second_fruit = fruits[1]
print(second_fruit)
実行結果
りんご バナナ
⚠️ インデックスエラーに注意
🔑 存在しないインデックスを指定するとエラー
リストの範囲を超えたインデックスを指定すると、エラーになります。
コード:エラーになる例
fruits = ["りんご", "バナナ", "オレンジ"]
# 要素は3つ(インデックスは0, 1, 2)
print(fruits[5]) # エラー!インデックス5は存在しない
❌ エラーメッセージ
IndexError: list index out of range
「リストのインデックスが範囲外です」という意味です。
💡 インデックスの範囲
要素がN個のリストの場合:
・有効なインデックス:0からN-1まで
・例:要素が3個 → インデックスは0, 1, 2
・例:要素が5個 → インデックスは0, 1, 2, 3, 4
🔰 負のインデックス(後ろから数える)
Pythonでは、マイナスのインデックスを使うと、後ろから数えられます。
📌 負のインデックスの仕組み
| 要素 | “りんご” | “バナナ” | “オレンジ” | “いちご” |
| 正のインデックス | 0 | 1 | 2 | 3 |
| 負のインデックス | -4 | -3 | -2 | -1 |
-1が最後、-2が後ろから2番目、-3が後ろから3番目…という数え方です。
コード:負のインデックス
fruits = ["りんご", "バナナ", "オレンジ", "いちご"]
# 負のインデックス(後ろから)
print(fruits[-1]) # 最後
print(fruits[-2]) # 後ろから2番目
print(fruits[-3]) # 後ろから3番目
print(fruits[-4]) # 後ろから4番目(最初と同じ)
実行結果
いちご オレンジ バナナ りんご
💡 負のインデックスの使い道
最後の要素を取りたい時に便利:
・要素数がわからなくても、-1で最後が取れます
・例:fruits[-1]は常に最後の要素
後ろから2番目、3番目も簡単:
・-2、-3と書くだけです
✂️ 3. スライス(部分的に取り出す)
スライスを使うと、リストの一部分を取り出せます。
🔰 スライスとは
📌 スライスの書き方
リスト名[開始:終了]
ポイント:
・開始インデックスから終了インデックスの手前までを取り出します
・開始は含む、終了は含まない(これが重要!)
・:(コロン)で区切ります
コード:スライスの基本
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# スライスの基本 [開始:終了]
print(numbers[2:5]) # 2番目から4番目まで(5は含まない)
print(numbers[0:3]) # 0番目から2番目まで
print(numbers[5:8]) # 5番目から7番目まで
実行結果
[2, 3, 4] [0, 1, 2] [5, 6, 7]
💡 コードの解説
numbers[2:5]
・インデックス2から始めて、5の手前(4)まで取り出します
・つまり、インデックス2, 3, 4の要素
・結果:[2, 3, 4]
numbers[0:3]
・インデックス0から始めて、3の手前(2)まで取り出します
・つまり、インデックス0, 1, 2の要素
・結果:[0, 1, 2]
重要: [2:5]と書いても、5番目の要素は含まれません!
🔑 スライスの重要ルール
[開始:終了]で指定すると:
・開始は含む
・終了は含まない
例:[2:5]は、インデックス2, 3, 4を取得(5は含まない)
このルールは、最初は混乱しますが、慣れると便利です。
📘 省略形のスライス
開始または終了を省略すると、最初や最後まで取得できます。
コード:省略形のスライス
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 最初から指定位置まで
print(numbers[:5]) # 最初から4番目まで
# 指定位置から最後まで
print(numbers[5:]) # 5番目から最後まで
# 全体をコピー
print(numbers[:]) # 全部
実行結果
[0, 1, 2, 3, 4] [5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
💡 省略形の意味
numbers[:5]
・開始を省略すると、最初(0)から始まります
・つまり、numbers[0:5]と同じ
numbers[5:]
・終了を省略すると、最後まで取得します
・つまり、5番目から最後まで
numbers[:]
・両方省略すると、全体をコピーします
・リスト全体の複製を作る時に使います
📘 ステップ付きスライス
[開始:終了:ステップ]で、何個飛ばしで取得するかを指定できます。
コード:ステップ付きスライス
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 2つ飛ばしで取得
print(numbers[::2]) # 0, 2, 4, 6, 8
# 3つ飛ばしで取得
print(numbers[::3]) # 0, 3, 6, 9
# 逆順にする
print(numbers[::-1]) # 9, 8, 7, ..., 0
実行結果
[0, 2, 4, 6, 8] [0, 3, 6, 9] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
💡 ステップの意味
numbers[::2]
・ステップ2 = 2つずつ進む
・0番目、2番目、4番目…と取得
numbers[::3]
・ステップ3 = 3つずつ進む
・0番目、3番目、6番目…と取得
numbers[::-1]
・ステップ-1 = 逆順
・リストを逆にする便利な方法です
➕ 4. リストに要素を追加する
リストに新しい要素を追加する方法を学びましょう。
📘 append()で末尾に追加
append()メソッドを使うと、リストの最後に要素を追加できます。
📌 append()の書き方
リスト名.append(追加する値)
ポイント:
・リスト名の後ろに.append()と書きます
・( )の中に追加したい値を書きます
・常にリストの最後に追加されます
コード:append()で追加
# 空のリストから始める
fruits = []
print(fruits)
# 要素を追加
fruits.append("りんご")
print(fruits)
fruits.append("バナナ")
print(fruits)
fruits.append("オレンジ")
print(fruits)
実行結果
[] ['りんご'] ['りんご', 'バナナ'] ['りんご', 'バナナ', 'オレンジ']
💡 コードの解説
fruits = []
・空のリストを作ります
・まだ何も入っていません
fruits.append(“りんご”)
・fruitsリストの最後に「りんご」を追加します
・.append()はメソッド(リストに対する操作)です
・リストが空の場合、最初の要素になります
fruits.append(“バナナ”)
・さらに「バナナ」を最後に追加します
・リストは[‘りんご’, ‘バナナ’]になります
📘 insert()で指定位置に挿入
insert()メソッドを使うと、好きな位置に要素を挿入できます。
📌 insert()の書き方
リスト名.insert(挿入位置, 追加する値)
ポイント:
・第1引数:挿入したいインデックス
・第2引数:追加したい値
・元の要素は後ろにずれます
コード:insert()で挿入
fruits = ["りんご", "オレンジ"]
print(fruits)
# 1番目に「バナナ」を挿入
fruits.insert(1, "バナナ")
print(fruits)
# 0番目(最初)に「いちご」を挿入
fruits.insert(0, "いちご")
print(fruits)
実行結果
['りんご', 'オレンジ'] ['りんご', 'バナナ', 'オレンジ'] ['いちご', 'りんご', 'バナナ', 'オレンジ']
💡 コードの解説
fruits.insert(1, “バナナ”)
・1番目の位置に「バナナ」を挿入します
・元々1番目にあった「オレンジ」は2番目にずれます
・結果:[‘りんご’, ‘バナナ’, ‘オレンジ’]
fruits.insert(0, “いちご”)
・0番目(最初)に「いちご」を挿入します
・他の要素は全部1つ後ろにずれます
・結果:[‘いちご’, ‘りんご’, ‘バナナ’, ‘オレンジ’]
📘 extend()で複数追加
extend()メソッドを使うと、別のリストをまとめて追加できます。
📌 extend()の書き方
リスト名.extend(追加するリスト)
ポイント:
・別のリストの要素を全部追加します
・元のリストに直接追加されます
コード:extend()で複数追加
fruits1 = ["りんご", "バナナ"]
fruits2 = ["オレンジ", "いちご", "ぶどう"]
print("追加前:", fruits1)
# fruits2をfruits1に追加
fruits1.extend(fruits2)
print("追加後:", fruits1)
実行結果
追加前: ['りんご', 'バナナ'] 追加後: ['りんご', 'バナナ', 'オレンジ', 'いちご', 'ぶどう']
💡 append()とextend()の違い
append(): 1つの要素を追加
fruits = ["りんご"]
fruits.append(["バナナ", "オレンジ"])
# 結果: ['りんご', ['バナナ', 'オレンジ']]
# リストが1つの要素として追加される
extend(): リストの各要素を個別に追加
fruits = ["りんご"]
fruits.extend(["バナナ", "オレンジ"])
# 結果: ['りんご', 'バナナ', 'オレンジ']
# リストの要素が個別に追加される
🗑️ 5. リストから要素を削除する
リストから要素を削除する方法を学びましょう。
📘 remove()で値を指定して削除
remove()メソッドを使うと、指定した値を削除できます。
📌 remove()の書き方
リスト名.remove(削除したい値)
ポイント:
・指定した値と一致する要素を削除します
・同じ値が複数ある場合、最初に見つかったものだけ削除します
・値が存在しない場合、エラーになります
コード:remove()で削除
fruits = ["りんご", "バナナ", "オレンジ", "バナナ"]
print("削除前:", fruits)
# 「バナナ」を削除(最初に見つかった1つだけ)
fruits.remove("バナナ")
print("削除後:", fruits)
実行結果
削除前: ['りんご', 'バナナ', 'オレンジ', 'バナナ'] 削除後: ['りんご', 'オレンジ', 'バナナ']
💡 コードの解説
fruits.remove(“バナナ”)
・「バナナ」という値を探して削除します
・同じ値が2つありますが、最初の1つだけ削除されます
・インデックス1の「バナナ」が削除され、後ろの要素が前に詰まります
📘 pop()でインデックスを指定して削除
pop()メソッドを使うと、指定した位置の要素を削除して取り出せます。
📌 pop()の書き方
削除した値 = リスト名.pop(インデックス)
ポイント:
・指定したインデックスの要素を削除します
・削除した値を返します(取り出せます)
・引数なしで呼ぶと、最後の要素を削除します
コード:pop()で削除
fruits = ["りんご", "バナナ", "オレンジ"]
# 1番目の要素を削除して取り出す
removed = fruits.pop(1)
print("削除した値:", removed)
print("残ったリスト:", fruits)
# 引数なしだと最後の要素を削除
last = fruits.pop()
print("削除した値:", last)
print("残ったリスト:", fruits)
実行結果
削除した値: バナナ 残ったリスト: ['りんご', 'オレンジ'] 削除した値: オレンジ 残ったリスト: ['りんご']
💡 コードの解説
removed = fruits.pop(1)
・1番目の要素(「バナナ」)を削除します
・削除した値を変数removedに保存します
・リストから削除されるので、残りは[‘りんご’, ‘オレンジ’]
last = fruits.pop()
・引数なしなので、最後の要素を削除します
・「オレンジ」が削除され、lastに保存されます
📘 del文で削除
del文を使っても、指定した要素を削除できます。
コード:del文で削除
fruits = ["りんご", "バナナ", "オレンジ", "いちご"]
# 1番目の要素を削除
del fruits[1]
print(fruits)
# スライスで複数削除
del fruits[1:3]
print(fruits)
実行結果
['りんご', 'オレンジ', 'いちご'] ['りんご']
💡 del文とpop()の違い
pop(): 削除した値を取り出せる
・使い道:削除した値を使いたい時
del文: 削除するだけ(値は取り出せない)
・使い道:削除した値が不要な時、スライスで複数削除したい時
📘 clear()で全削除
clear()メソッドで、リストの中身を全て削除できます。
コード:clear()で全削除
fruits = ["りんご", "バナナ", "オレンジ"]
print("削除前:", fruits)
# 全削除
fruits.clear()
print("削除後:", fruits)
実行結果
削除前: ['りんご', 'バナナ', 'オレンジ'] 削除後: []
📏 6. リストの長さと便利な関数
リストを扱う便利な関数を学びましょう。
📘 len()で長さを取得
len()関数を使うと、リストに何個の要素があるかがわかります。
📌 len()の書き方
要素数 = len(リスト名)
ポイント:
・リストの要素数を返します
・空のリストは0を返します
コード:len()で長さ取得
fruits = ["りんご", "バナナ", "オレンジ"]
print(len(fruits))
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(len(numbers))
empty = []
print(len(empty))
実行結果
3 10 0
💡 len()の使い道
・リストに何個データがあるか確認する
・最後のインデックスを知る(len() – 1)
・ループ処理で使う(後で学びます)
📘 in演算子で存在確認
in演算子を使うと、リストに特定の値が含まれているかを確認できます。
コード:in演算子で確認
fruits = ["りんご", "バナナ", "オレンジ"]
# 含まれているか確認
print("りんご" in fruits) # True
print("ぶどう" in fruits) # False
# 含まれていないか確認(not in)
print("バナナ" not in fruits) # False(含まれている)
print("メロン" not in fruits) # True(含まれていない)
実行結果
True False False True
💡 in演算子の使い道
・remove()の前に、値が存在するか確認する
・条件分岐で「リストに含まれている場合」を判定する
・重複チェックに使う
📘 count()で個数を数える
count()メソッドで、特定の値が何個あるかを数えられます。
コード:count()で個数を数える
numbers = [1, 2, 3, 2, 4, 2, 5]
# 「2」が何個あるか
print(numbers.count(2))
# 「10」が何個あるか(含まれていない)
print(numbers.count(10))
実行結果
3 0
📘 index()で位置を検索
index()メソッドで、特定の値のインデックスを調べられます。
コード:index()で位置検索
fruits = ["りんご", "バナナ", "オレンジ"]
# 「バナナ」のインデックスを取得
position = fruits.index("バナナ")
print("バナナのインデックス:", position)
実行結果
バナナのインデックス: 1
⚠️ 注意
index()は、値が存在しない場合にエラーになります。
事前にin演算子で存在を確認すると安全です。
🔄 7. リストの操作いろいろ
📘 リストの連結(+)
+演算子で、リスト同士を連結できます。
コード:リストの連結
list1 = [1, 2, 3]
list2 = [4, 5, 6]
# リストを連結
result = list1 + list2
print(result)
実行結果
[1, 2, 3, 4, 5, 6]
💡 +とextend()の違い
+演算子: 新しいリストを作る
・元のリストは変更されません
extend(): 元のリストに追加する
・元のリストが変更されます
📘 リストの繰り返し(*)
*演算子で、リストを繰り返せます。
コード:リストの繰り返し
numbers = [1, 2, 3]
# 3回繰り返す
result = numbers * 3
print(result)
実行結果
[1, 2, 3, 1, 2, 3, 1, 2, 3]
📘 要素の変更
インデックスを指定して、要素を上書きできます。
コード:要素の変更
fruits = ["りんご", "バナナ", "オレンジ"]
print("変更前:", fruits)
# 1番目を変更
fruits[1] = "いちご"
print("変更後:", fruits)
実行結果
変更前: ['りんご', 'バナナ', 'オレンジ'] 変更後: ['りんご', 'いちご', 'オレンジ']
📝 練習問題
ここまで学んだことを、実際に手を動かして確認しましょう。
問題1:リストの作成と表示(初級)
📋 問題
あなたの好きな食べ物を5つ、リストに入れて表示してください。
解答例を見る
コード
favorite_foods = ["カレー", "ラーメン", "寿司", "ハンバーグ", "ピザ"]
print(favorite_foods)
実行結果
['カレー', 'ラーメン', '寿司', 'ハンバーグ', 'ピザ']
問題2:インデックスで取り出す(初級)
📋 問題
以下のリストから、指定された要素を取り出してください:
colors = [“赤”, “青”, “緑”, “黄”, “紫”]
・最初の要素
・3番目の要素(インデックス2)
・最後の要素(負のインデックスを使う)
解答例を見る
コード
colors = ["赤", "青", "緑", "黄", "紫"]
# 最初の要素
print(colors[0])
# 3番目の要素
print(colors[2])
# 最後の要素
print(colors[-1])
実行結果
赤 緑 紫
問題3:リストに要素を追加(中級)
📋 問題
空のリストを作成し、append()を使って以下の数値を順番に追加してください:
10, 20, 30, 40, 50
解答例を見る
コード
# 空のリストを作成
numbers = []
# 要素を追加
numbers.append(10)
numbers.append(20)
numbers.append(30)
numbers.append(40)
numbers.append(50)
print(numbers)
実行結果
[10, 20, 30, 40, 50]
問題4:スライスの練習(中級)
📋 問題
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]から、以下を取り出してください:
・最初の3つ
・3番目から6番目まで(インデックス3から7の手前まで)
・後ろから3つ
解答例を見る
コード
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 最初の3つ
print(numbers[:3])
# 3番目から6番目まで
print(numbers[3:7])
# 後ろから3つ
print(numbers[-3:])
実行結果
[0, 1, 2] [3, 4, 5, 6] [7, 8, 9]
問題5:買い物リストプログラム(上級)
📋 問題
以下の機能を持つプログラムを作ってください:
1. 空の買い物リストを作る
2. 「牛乳」「パン」「卵」を追加
3. リストの長さ(アイテム数)を表示
4. 「パン」をリストから削除
5. 最終的なリストを表示
解答例を見る
コード
# 1. 空のリストを作成
shopping_list = []
# 2. アイテムを追加
shopping_list.append("牛乳")
shopping_list.append("パン")
shopping_list.append("卵")
print("追加後:", shopping_list)
# 3. アイテム数を表示
count = len(shopping_list)
print("アイテム数:", count)
# 4. 「パン」を削除
shopping_list.remove("パン")
# 5. 最終的なリストを表示
print("最終リスト:", shopping_list)
実行結果
追加後: ['牛乳', 'パン', '卵'] アイテム数: 3 最終リスト: ['牛乳', '卵']
🎯 このステップのまとめ
✅ 学んだこと
✓ リストは[ ]で作る
✓ インデックスは0から始まる
✓ 負のインデックスで後ろから取得できる
✓ スライス[開始:終了]で部分取得(終了は含まない)
✓ append()で末尾に追加
✓ insert()で指定位置に挿入
✓ extend()で複数要素を追加
✓ remove()で値を指定して削除
✓ pop()で位置を指定して削除(値を取り出せる)
✓ len()でリストの長さを取得
✓ in演算子で存在確認
✓ count()で個数を数える
✓ index()で位置を検索
💡 次のステップに進む前に確認
以下のことができるようになったか確認しましょう:
□ リストを作成できる
□ インデックスで要素を取り出せる(0から始まることを理解)
□ スライスを使って部分取得できる
□ append()やremove()を使える
□ len()でリストの長さを取得できる
□ in演算子で存在確認ができる
これらができたら、次のステップに進みましょう!
❓ よくある質問
Q1: インデックスが0から始まる理由は?
A: プログラミング言語の多くは、メモリの先頭からの「オフセット(ズレ)」という考え方を使っているため、0から始まります。
慣れるまで大変ですが、プログラマーにとっては自然な数え方です。1から始まる言語(LuaやMATLAB)もありますが、少数派です。
Q2: append()とextend()の違いは?
A:
append(): 1つの要素を追加
・list.append([1, 2]) → リストを1つの要素として追加
・結果:[…, [1, 2]]
extend(): 複数の要素を個別に追加
・list.extend([1, 2]) → 1と2を個別に追加
・結果:[…, 1, 2]
Q3: スライスの[2:5]で5が含まれないのはなぜ?
A: これはプログラミングの慣習です。「2から始めて、5の手前まで」と考えます。
この方が、len(list[2:5])が5 - 2 = 3となって計算しやすいためです。
Q4: remove()で存在しない値を削除しようとすると?
A: エラーになります(ValueError)。
事前にin演算子で存在を確認するか、後で学ぶ例外処理を使いましょう。
# 安全な削除方法
if "バナナ" in fruits:
fruits.remove("バナナ")
Q5: リストは何個まで要素を入れられますか?
A: 理論上はメモリが許す限り入れられます。
実用上は数万〜数百万個でも問題ありませんが、大量のデータを扱う場合は、後で学ぶNumPyやPandasを使うとより効率的です。
Q6: リストの中にリストを入れられますか?
A: はい、できます。これを「ネストしたリスト」や「2次元リスト」と呼びます。
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[0]) # [1, 2, 3]
print(matrix[0][0]) # 1
詳しくは後のステップで学びます。
Q7: リストをコピーするには?
A: スライス[:]を使うか、copy()メソッドを使います。
# 方法1: スライス
list2 = list1[:]
# 方法2: copy()
list2 = list1.copy()
注意: list2 = list1とすると、コピーではなく同じリストを指します。
Q8: リストを並べ替えるには?
A: sort()メソッドまたはsorted()関数を使います。
# 元のリストを変更する
numbers = [5, 2, 8, 1, 9]
numbers.sort()
print(numbers) # [1, 2, 5, 8, 9]
# 新しいリストを作る
numbers = [5, 2, 8, 1, 9]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 2, 5, 8, 9]
print(numbers) # [5, 2, 8, 1, 9] 元は変わらない
学習メモ
Pythonデータ分析入門 - Step 4