リストの基本 - 複数のデータをまとめて管理
目次
このレッスンで学ぶこと
- リストとは何か
- リストの作成方法
- リストの基本操作
- リストの特徴と用途
リストとは
リストは、複数の値を順序付けて格納するデータ構造です。Pythonで最も基本的で使用頻度の高い機能の一つです。
| 項目 | 説明 |
|---|---|
| 表記法 | [要素1, 要素2, 要素3, ...] |
| 型 | <class 'list'> |
| 変更可能 | はい(ミュータブル) |
| 順序 | 保持する |
主な特徴:
- 複数のデータを1つの変数でまとめて管理できる
- 整数、文字列、浮動小数点数など異なる型を混在させることができる
- インデックスは0から始まる
- ループで効率的に処理できる
簡単なコード例:
Python# リストの作成 fruits = ["りんご", "バナナ", "オレンジ"] numbers = [1, 2, 3, 4, 5] mixed = [1, "Python", 3.14, True] # リストの表示 print(fruits) print(numbers)
実行結果:
['りんご', 'バナナ', 'オレンジ']
[1, 2, 3, 4, 5]
なぜリストが必要なのか?
プログラミングでは、複数の関連するデータをまとめて扱いたいことがよくあります。
Python# リストを使わない場合(非効率) student1 = "田中" student2 = "佐藤" student3 = "鈴木" student4 = "高橋" student5 = "伊藤" # リストを使う場合(効率的) students = ["田中", "佐藤", "鈴木", "高橋", "伊藤"]
リストを使うことで、複数のデータを1つの変数でまとめて管理できます。
💡 豆知識: リストは他のプログラミング言語では「配列(Array)」と呼ばれることが多いです。Pythonのリストは非常に柔軟で、異なる型のデータを混在させることもできます。
リストの作成
空のリストを作る
Python# 空のリスト(2つの方法) empty_list1 = [] empty_list2 = list() print(empty_list1) print(empty_list2)
実行結果:
[]
[]
いろいろなリスト
Python# 数値のリスト numbers = [1, 2, 3, 4, 5] print(numbers) # 文字列のリスト fruits = ["りんご", "バナナ", "オレンジ"] print(fruits) # 混合型のリスト mixed = [1, "Python", 3.14, True] print(mixed) # リストのリスト(2次元リスト) matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(matrix)
実行結果:
[1, 2, 3, 4, 5]
['りんご', 'バナナ', 'オレンジ']
[1, 'Python', 3.14, True]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
リストの基本操作
長さの取得
機能: リストに含まれる要素の数を取得します。
書き方:
Pythonlen(リスト)
用途: 要素数の確認、ループの範囲指定、空判定
注意点: 空のリストの長さは0
Pythonfruits = ["りんご", "バナナ", "オレンジ"] print(f"要素数: {len(fruits)}") empty = [] print(f"空リストの長さ: {len(empty)}")
実行結果:
要素数: 3
空リストの長さ: 0
要素の存在チェック
機能: 指定した値がリストに含まれているか確認します。
書き方:
Python値 in リスト 値 not in リスト
用途: 値の存在確認、条件分岐、重複チェック
注意点: 大文字小文字は区別される
Pythonfruits = ["りんご", "バナナ", "オレンジ"] print("りんご" in fruits) print("ぶどう" in fruits) print("ぶどう" not in fruits)
実行結果:
True
False
True
リストの連結
機能: 2つのリストを結合して新しいリストを作成します。
書き方:
Pythonリスト1 + リスト2
用途: リストの結合、データの統合
注意点: 元のリストは変更されない(新しいリストが作られる)
Pythonlist1 = [1, 2, 3] list2 = [4, 5, 6] combined = list1 + list2 print(combined) print(f"元のリスト1: {list1}") print(f"元のリスト2: {list2}")
実行結果:
[1, 2, 3, 4, 5, 6]
元のリスト1: [1, 2, 3]
元のリスト2: [4, 5, 6]
リストの繰り返し
機能: リストの要素を指定回数繰り返して新しいリストを作成します。
書き方:
Pythonリスト * 回数
用途: パターンの生成、初期値の設定
注意点: 参照のコピーなので注意が必要
Pythonnumbers = [1, 2, 3] repeated = numbers * 3 print(repeated)
実行結果:
[1, 2, 3, 1, 2, 3, 1, 2, 3]
具体例
例1: 買い物リスト
Pythonshopping_list = ["牛乳", "パン", "卵", "バナナ"] print("=== 買い物リスト ===") print(f"アイテム数: {len(shopping_list)}個") for item in shopping_list: print(f"- {item}")
実行結果:
=== 買い物リスト ===
アイテム数: 4個
- 牛乳
- パン
- 卵
- バナナ
例2: 成績管理
Pythonscores = [85, 92, 78, 95, 88] print("=== 成績一覧 ===") print(f"受験者数: {len(scores)}人") total = sum(scores) average = total / len(scores) print(f"合計点: {total}点") print(f"平均点: {average:.1f}点")
実行結果:
=== 成績一覧 ===
受験者数: 5人
合計点: 438点
平均点: 87.6点
例3: 曜日のリスト
Pythonweekdays = ["月", "火", "水", "木", "金"] weekend = ["土", "日"] all_days = weekdays + weekend print("平日:", weekdays) print("週末:", weekend) print("全曜日:", all_days)
実行結果:
平日: ['月', '火', '水', '木', '金']
週末: ['土', '日']
全曜日: ['月', '火', '水', '木', '金', '土', '日']
例4: 在庫チェック
Pythonavailable_items = ["りんご", "バナナ", "オレンジ", "ぶどう"] # 注文された商品 order = "バナナ" if order in available_items: print(f"{order}は在庫があります") else: print(f"{order}は在庫がありません") # もう一つ確認 order2 = "メロン" if order2 not in available_items: print(f"{order2}は在庫がありません")
実行結果:
バナナは在庫があります
メロンは在庫がありません
例5: チームメンバー管理
Pythonteam_a = ["田中", "佐藤", "鈴木"] team_b = ["高橋", "伊藤", "渡辺"] all_members = team_a + team_b print("=== チーム構成 ===") print(f"チームA: {team_a}") print(f"チームB: {team_b}") print(f"全メンバー: {all_members}") print(f"総人数: {len(all_members)}人")
実行結果:
=== チーム構成 ===
チームA: ['田中', '佐藤', '鈴木']
チームB: ['高橋', '伊藤', '渡辺']
全メンバー: ['田中', '佐藤', '鈴木', '高橋', '伊藤', '渡辺']
総人数: 6人
例6: パターン生成
Python# ゲームの初期設定 player_lives = [1] * 3 print(f"プレイヤーのライフ: {player_lives}") # マス目の作成 board = [0] * 10 print(f"ゲームボード: {board}") # 繰り返しパターン pattern = ["○", "×"] * 5 print(f"パターン: {pattern}")
実行結果:
プレイヤーのライフ: [1, 1, 1]
ゲームボード: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
パターン: ['○', '×', '○', '×', '○', '×', '○', '×', '○', '×']
リストの特徴
ミュータブル(変更可能)
Python# リストは変更できる numbers = [1, 2, 3] print(f"変更前: {numbers}") numbers[0] = 10 print(f"変更後: {numbers}")
実行結果:
変更前: [1, 2, 3]
変更後: [10, 2, 3]
順序を保持
Python# 追加した順序が保持される items = [] items.append("first") items.append("second") items.append("third") print(items)
実行結果:
['first', 'second', 'third']
重複を許可
Python# 同じ値を複数持てる numbers = [1, 2, 2, 3, 3, 3] print(numbers) print(f"2の個数: {numbers.count(2)}") print(f"3の個数: {numbers.count(3)}")
実行結果:
[1, 2, 2, 3, 3, 3]
2の個数: 2
3の個数: 3
よくある間違い
間違い1: 角括弧を忘れる
Python# 間違い numbers = 1, 2, 3 # これはタプル print(type(numbers)) # 正しい numbers = [1, 2, 3] # これがリスト print(type(numbers))
実行結果:
<class 'tuple'>
<class 'list'>
間違い2: カンマを忘れる
Python# 間違い fruits = ["りんご" "バナナ"] # カンマがない print(fruits) # ['りんごバナナ'] になる # 正しい fruits = ["りんご", "バナナ"] print(fruits)
実行結果:
['りんごバナナ']
['りんご', 'バナナ']
間違い3: インデックスの理解
Python# インデックスは0から始まる fruits = ["りんご", "バナナ", "オレンジ"] print(f"1番目の要素: {fruits[0]}") # 0が1番目 print(f"2番目の要素: {fruits[1]}") # 1が2番目
実行結果:
1番目の要素: りんご
2番目の要素: バナナ
間違い4: リストと文字列の混同
Python# 文字列はリストではない text = "Python" print(type(text)) # 文字列をリストに変換 text_list = list(text) print(text_list) print(type(text_list))
実行結果:
<class 'str'>
['P', 'y', 't', 'h', 'o', 'n']
<class 'list'>
間違い5: 空リストの判定
Python# 間違い items = [] if len(items) == 0: # 冗長 print("空です") # 正しい(Pythonic) items = [] if not items: # シンプル print("空です") # 空でないリスト items = [1, 2, 3] if items: print("要素があります")
実行結果:
空です
空です
要素があります
練習問題
問題1(基礎)⭐☆☆
好きな果物を3つ格納したリストを作成し、表示してください。
💡 ヒント
角括弧で囲み、カンマで区切ります。
✅ 解答例
Pythonfruits = ["りんご", "バナナ", "オレンジ"] print(fruits)
実行結果:
['りんご', 'バナナ', 'オレンジ']
解説: 角括弧でリストを作成し、要素をカンマで区切っています。
問題2(基礎)⭐☆☆
リスト [10, 20, 30, 40, 50] の要素数を表示してください。
💡 ヒント
len()関数を使います。
✅ 解答例
Pythonnumbers = [10, 20, 30, 40, 50] print(f"要素数: {len(numbers)}")
実行結果:
要素数: 5
解説: len()関数でリストの要素数を取得できます。
問題3(応用)⭐⭐☆
2つのリスト [1, 2, 3] と [4, 5, 6] を連結して、新しいリストを作成してください。
💡 ヒント
+ 演算子でリストを連結できます。
✅ 解答例
Pythonlist1 = [1, 2, 3] list2 = [4, 5, 6] combined = list1 + list2 print(combined)
実行結果:
[1, 2, 3, 4, 5, 6]
解説:
+ 演算子で2つのリストを連結できます。
まとめ
このレッスンでは、リストの基本概念と作成方法を学びました。
- リストは複数データを順序付きで管理するための基本データ構造です。
[]を使った作成と、要素の並びを意識した扱い方を理解しました。- 異なる型の要素を同じリストで管理できる特徴を確認しました。
- リストを使うことで、関連データをまとめて処理しやすくなります。
- 初期化と表示を小さく確認しながら、段階的に操作を増やすことが重要です。
リストの基本 - 複数のデータをまとめて管理
目次
このレッスンで学ぶこと
- リストとは何か
- リストの作成方法
- リストの基本操作
- リストの特徴と用途
リストとは
リストは、複数の値を順序付けて格納するデータ構造です。Pythonで最も基本的で使用頻度の高い機能の一つです。
| 項目 | 説明 |
|---|---|
| 表記法 | [要素1, 要素2, 要素3, ...] |
| 型 | <class 'list'> |
| 変更可能 | はい(ミュータブル) |
| 順序 | 保持する |
主な特徴:
- 複数のデータを1つの変数でまとめて管理できる
- 整数、文字列、浮動小数点数など異なる型を混在させることができる
- インデックスは0から始まる
- ループで効率的に処理できる
簡単なコード例:
Python# リストの作成 fruits = ["りんご", "バナナ", "オレンジ"] numbers = [1, 2, 3, 4, 5] mixed = [1, "Python", 3.14, True] # リストの表示 print(fruits) print(numbers)
実行結果:
['りんご', 'バナナ', 'オレンジ']
[1, 2, 3, 4, 5]
なぜリストが必要なのか?
プログラミングでは、複数の関連するデータをまとめて扱いたいことがよくあります。
Python# リストを使わない場合(非効率) student1 = "田中" student2 = "佐藤" student3 = "鈴木" student4 = "高橋" student5 = "伊藤" # リストを使う場合(効率的) students = ["田中", "佐藤", "鈴木", "高橋", "伊藤"]
リストを使うことで、複数のデータを1つの変数でまとめて管理できます。
💡 豆知識: リストは他のプログラミング言語では「配列(Array)」と呼ばれることが多いです。Pythonのリストは非常に柔軟で、異なる型のデータを混在させることもできます。
リストの作成
空のリストを作る
Python# 空のリスト(2つの方法) empty_list1 = [] empty_list2 = list() print(empty_list1) print(empty_list2)
実行結果:
[]
[]
いろいろなリスト
Python# 数値のリスト numbers = [1, 2, 3, 4, 5] print(numbers) # 文字列のリスト fruits = ["りんご", "バナナ", "オレンジ"] print(fruits) # 混合型のリスト mixed = [1, "Python", 3.14, True] print(mixed) # リストのリスト(2次元リスト) matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(matrix)
実行結果:
[1, 2, 3, 4, 5]
['りんご', 'バナナ', 'オレンジ']
[1, 'Python', 3.14, True]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
リストの基本操作
長さの取得
機能: リストに含まれる要素の数を取得します。
書き方:
Pythonlen(リスト)
用途: 要素数の確認、ループの範囲指定、空判定
注意点: 空のリストの長さは0
Pythonfruits = ["りんご", "バナナ", "オレンジ"] print(f"要素数: {len(fruits)}") empty = [] print(f"空リストの長さ: {len(empty)}")
実行結果:
要素数: 3
空リストの長さ: 0
要素の存在チェック
機能: 指定した値がリストに含まれているか確認します。
書き方:
Python値 in リスト 値 not in リスト
用途: 値の存在確認、条件分岐、重複チェック
注意点: 大文字小文字は区別される
Pythonfruits = ["りんご", "バナナ", "オレンジ"] print("りんご" in fruits) print("ぶどう" in fruits) print("ぶどう" not in fruits)
実行結果:
True
False
True
リストの連結
機能: 2つのリストを結合して新しいリストを作成します。
書き方:
Pythonリスト1 + リスト2
用途: リストの結合、データの統合
注意点: 元のリストは変更されない(新しいリストが作られる)
Pythonlist1 = [1, 2, 3] list2 = [4, 5, 6] combined = list1 + list2 print(combined) print(f"元のリスト1: {list1}") print(f"元のリスト2: {list2}")
実行結果:
[1, 2, 3, 4, 5, 6]
元のリスト1: [1, 2, 3]
元のリスト2: [4, 5, 6]
リストの繰り返し
機能: リストの要素を指定回数繰り返して新しいリストを作成します。
書き方:
Pythonリスト * 回数
用途: パターンの生成、初期値の設定
注意点: 参照のコピーなので注意が必要
Pythonnumbers = [1, 2, 3] repeated = numbers * 3 print(repeated)
実行結果:
[1, 2, 3, 1, 2, 3, 1, 2, 3]
具体例
例1: 買い物リスト
Pythonshopping_list = ["牛乳", "パン", "卵", "バナナ"] print("=== 買い物リスト ===") print(f"アイテム数: {len(shopping_list)}個") for item in shopping_list: print(f"- {item}")
実行結果:
=== 買い物リスト ===
アイテム数: 4個
- 牛乳
- パン
- 卵
- バナナ
例2: 成績管理
Pythonscores = [85, 92, 78, 95, 88] print("=== 成績一覧 ===") print(f"受験者数: {len(scores)}人") total = sum(scores) average = total / len(scores) print(f"合計点: {total}点") print(f"平均点: {average:.1f}点")
実行結果:
=== 成績一覧 ===
受験者数: 5人
合計点: 438点
平均点: 87.6点
例3: 曜日のリスト
Pythonweekdays = ["月", "火", "水", "木", "金"] weekend = ["土", "日"] all_days = weekdays + weekend print("平日:", weekdays) print("週末:", weekend) print("全曜日:", all_days)
実行結果:
平日: ['月', '火', '水', '木', '金']
週末: ['土', '日']
全曜日: ['月', '火', '水', '木', '金', '土', '日']
例4: 在庫チェック
Pythonavailable_items = ["りんご", "バナナ", "オレンジ", "ぶどう"] # 注文された商品 order = "バナナ" if order in available_items: print(f"{order}は在庫があります") else: print(f"{order}は在庫がありません") # もう一つ確認 order2 = "メロン" if order2 not in available_items: print(f"{order2}は在庫がありません")
実行結果:
バナナは在庫があります
メロンは在庫がありません
例5: チームメンバー管理
Pythonteam_a = ["田中", "佐藤", "鈴木"] team_b = ["高橋", "伊藤", "渡辺"] all_members = team_a + team_b print("=== チーム構成 ===") print(f"チームA: {team_a}") print(f"チームB: {team_b}") print(f"全メンバー: {all_members}") print(f"総人数: {len(all_members)}人")
実行結果:
=== チーム構成 ===
チームA: ['田中', '佐藤', '鈴木']
チームB: ['高橋', '伊藤', '渡辺']
全メンバー: ['田中', '佐藤', '鈴木', '高橋', '伊藤', '渡辺']
総人数: 6人
例6: パターン生成
Python# ゲームの初期設定 player_lives = [1] * 3 print(f"プレイヤーのライフ: {player_lives}") # マス目の作成 board = [0] * 10 print(f"ゲームボード: {board}") # 繰り返しパターン pattern = ["○", "×"] * 5 print(f"パターン: {pattern}")
実行結果:
プレイヤーのライフ: [1, 1, 1]
ゲームボード: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
パターン: ['○', '×', '○', '×', '○', '×', '○', '×', '○', '×']
リストの特徴
ミュータブル(変更可能)
Python# リストは変更できる numbers = [1, 2, 3] print(f"変更前: {numbers}") numbers[0] = 10 print(f"変更後: {numbers}")
実行結果:
変更前: [1, 2, 3]
変更後: [10, 2, 3]
順序を保持
Python# 追加した順序が保持される items = [] items.append("first") items.append("second") items.append("third") print(items)
実行結果:
['first', 'second', 'third']
重複を許可
Python# 同じ値を複数持てる numbers = [1, 2, 2, 3, 3, 3] print(numbers) print(f"2の個数: {numbers.count(2)}") print(f"3の個数: {numbers.count(3)}")
実行結果:
[1, 2, 2, 3, 3, 3]
2の個数: 2
3の個数: 3
よくある間違い
間違い1: 角括弧を忘れる
Python# 間違い numbers = 1, 2, 3 # これはタプル print(type(numbers)) # 正しい numbers = [1, 2, 3] # これがリスト print(type(numbers))
実行結果:
<class 'tuple'>
<class 'list'>
間違い2: カンマを忘れる
Python# 間違い fruits = ["りんご" "バナナ"] # カンマがない print(fruits) # ['りんごバナナ'] になる # 正しい fruits = ["りんご", "バナナ"] print(fruits)
実行結果:
['りんごバナナ']
['りんご', 'バナナ']
間違い3: インデックスの理解
Python# インデックスは0から始まる fruits = ["りんご", "バナナ", "オレンジ"] print(f"1番目の要素: {fruits[0]}") # 0が1番目 print(f"2番目の要素: {fruits[1]}") # 1が2番目
実行結果:
1番目の要素: りんご
2番目の要素: バナナ
間違い4: リストと文字列の混同
Python# 文字列はリストではない text = "Python" print(type(text)) # 文字列をリストに変換 text_list = list(text) print(text_list) print(type(text_list))
実行結果:
<class 'str'>
['P', 'y', 't', 'h', 'o', 'n']
<class 'list'>
間違い5: 空リストの判定
Python# 間違い items = [] if len(items) == 0: # 冗長 print("空です") # 正しい(Pythonic) items = [] if not items: # シンプル print("空です") # 空でないリスト items = [1, 2, 3] if items: print("要素があります")
実行結果:
空です
空です
要素があります
練習問題
問題1(基礎)⭐☆☆
好きな果物を3つ格納したリストを作成し、表示してください。
💡 ヒント
角括弧で囲み、カンマで区切ります。
✅ 解答例
Pythonfruits = ["りんご", "バナナ", "オレンジ"] print(fruits)
実行結果:
['りんご', 'バナナ', 'オレンジ']
解説: 角括弧でリストを作成し、要素をカンマで区切っています。
問題2(基礎)⭐☆☆
リスト [10, 20, 30, 40, 50] の要素数を表示してください。
💡 ヒント
len()関数を使います。
✅ 解答例
Pythonnumbers = [10, 20, 30, 40, 50] print(f"要素数: {len(numbers)}")
実行結果:
要素数: 5
解説: len()関数でリストの要素数を取得できます。
問題3(応用)⭐⭐☆
2つのリスト [1, 2, 3] と [4, 5, 6] を連結して、新しいリストを作成してください。
💡 ヒント
+ 演算子でリストを連結できます。
✅ 解答例
Pythonlist1 = [1, 2, 3] list2 = [4, 5, 6] combined = list1 + list2 print(combined)
実行結果:
[1, 2, 3, 4, 5, 6]
解説:
+ 演算子で2つのリストを連結できます。
まとめ
このレッスンでは、リストの基本概念と作成方法を学びました。
- リストは複数データを順序付きで管理するための基本データ構造です。
[]を使った作成と、要素の並びを意識した扱い方を理解しました。- 異なる型の要素を同じリストで管理できる特徴を確認しました。
- リストを使うことで、関連データをまとめて処理しやすくなります。
- 初期化と表示を小さく確認しながら、段階的に操作を増やすことが重要です。