5. リストと辞書でデータを整理

目次

この講座で使用する Google Colab の URL

5. リストと辞書でデータを整理 (Google Colab)

演習課題

Ex.5. リストと辞書でデータを整理 (Google Colab)

この講座で使用する Python, Jupyter Notebook のファイルと実行環境

Lesson 5: high-school-python-code (GitHub)

5.1 リストとは?複数の値を順番に管理する方法

学校の名簿、テストの各科目の点数など、私たちの周りには「データの一覧」がたくさんあります。Python では、このような複数のデータを順番に管理するために「リスト」という機能を使います。

リスト型 (list)

リストは配列(Array)とも呼ばれることがありますが、Python では list というデータ型です。

リストの作り方

基本的なリストの作成

fruits = ["りんご", "バナナ", "オレンジ"]
numbers = [1, 2, 3, 4, 5]

# 異なる型のデータも OK
mix = ["太郎", 15, "東京", 172.5]

# 空のリストを定義する
my_list = []

リストの要素を取り出す

リストの要素を指定するには、文字列と同じようにインデックスを使います。また、文字列で学んだのと同じように、スライスを使ったり、マイナスのインデックスを使ったりすることもできます。

リストの要素を取り出す

fruits = ["りんご", "バナナ", "オレンジ", "ぶどう", "メロン"]

# インデックスで要素を取り出す
print(fruits[0])   # りんご (最初の要素)
print(fruits[1])   # バナナ (2 番目の要素)
print(fruits[-1])  # メロン (最後の要素)
print(fruits[-2])  # ぶどう (後ろから 2 番目の要素)

# 範囲を指定して取り出す (スライス)
print(fruits[1:3])  # ['バナナ', 'オレンジ']
print(fruits[:3])   # ['りんご', 'バナナ', 'オレンジ']
print(fruits[2:])   # ['オレンジ', 'ぶどう', 'メロン']

リストの長さを調べる

また、len 関数を使ってリストの長さ(要素数)を調べることもできます。

リストの長さを調べる

fruits = ["りんご", "バナナ", "オレンジ"]
length = len(fruits)
print(f"リストの長さ:{length}")  # 3

リストの型ヒント

リストにも型ヒントを書くことができます。リストの要素の型が決まっている場合は、型ヒントを書くことでコードを読みやすくすることができます。

リストの型ヒント

fruits: list[str] = ["りんご", "バナナ", "オレンジ"]
numbers: list[int] = [1, 2, 3, 4, 5]

この他にも色々な型ヒントの書き方がありますが(any, union など)、ここでは長くなるので省略します。

5.2 リストへの要素追加・削除・取り出し

リストは、一度作成した後でも内容を自由に変更することができます。要素の追加、削除、並び替えなど、色々な操作が可能です。

リストへの要素の追加

1. append(): 末尾に追加

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

append() で末尾に追加

foods = ["カレー", "ラーメン"]
foods.append("寿司")
print(foods)  # ['カレー', 'ラーメン', '寿司']

# 複数回追加
foods.append("うどん")
foods.append("そば")
print(foods)  # ['カレー', 'ラーメン', '寿司', 'うどん', 'そば']

2. insert(): 指定位置に追加

insert() は、指定した位置に要素を追加するメソッドです。

insert() で指定位置に追加

foods = ["カレー", "ラーメン", "寿司"]
# インデックス 1 の位置に挿入
foods.insert(1, "うどん")
print(foods)  # ['カレー', 'うどん', 'ラーメン', '寿司']

# 先頭に追加
foods.insert(0, "そば")
print(foods)  # ['そば', 'カレー', 'うどん', 'ラーメン', '寿司']

リストからの要素の削除

1. remove(): 指定した要素を削除

remove() は、指定した要素を削除するメソッドです。

remove() で指定した要素を削除

foods = ["カレー", "ラーメン", "寿司", "うどん"]
foods.remove("ラーメン")
print(foods)  # ['カレー', '寿司', 'うどん']

# 存在しない要素を削除しようとするとエラーになります
foods.remove("パスタ")

2. del: インデックスを指定して削除

del は、指定したインデックスの要素を削除する演算子です。細かい話なのですが、メソッドではなく演算子です。

del でインデックスを指定して削除

foods = ["カレー", "ラーメン", "寿司", "うどん"]
# インデックス 1 の要素を削除
del foods[1]
print(foods)  # ['カレー', '寿司', 'うどん']

# 範囲を指定して削除
# インデックス 1 から 2 までを削除
del foods[1:3]
print(foods)  # ['カレー']

# 範囲外のインデックスを指定するとエラーになります
del foods[10]

3. pop(): 要素を取り出して削除

pop() は、指定した要素を取り出して削除するメソッドです。remove() や del とは違い、削除と同時に値を代入して使うことができます。

pop() で要素を取り出して削除

foods = ["カレー", "ラーメン", "寿司"]
last_food = foods.pop()
print(f"取り出した要素: {last_food}")  # 寿司
print(f"残りのリスト: {foods}")  # ['カレー', 'ラーメン']

# インデックスを指定して取り出し
second_food = foods.pop(1)  # インデックス1の要素を取り出す
print(f"取り出した要素: {second_food}")  # ラーメン
print(f"残りのリスト: {foods}")  # ['カレー']

リストの操作と並び替え

1. sort(): 要素の並び替え

sort() は、リストの要素を並び替えるメソッドです。デフォルトでは昇順に並び替えられます。

sort() で要素の並び替え

# 数値のソート
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort()  # 昇順に並び替え
print(numbers)  # [1, 1, 2, 3, 4, 5, 9]

numbers.sort(reverse=True)  # 降順に並び替え
print(numbers)  # [9, 5, 4, 3, 2, 1, 1]

# 文字列のソート
names = ["田中", "山田", "佐藤", "鈴木"]
names.sort()  # 50音順に並び替え
print(names)  # ['佐藤', '鈴木', '田中', '山田']

2. reverse(): 順序の反転

reverse() は、リストの順序を反転するメソッドです。

reverse() で順序を反転

foods = ["カレー", "ラーメン", "寿司"]
foods.reverse()
print(foods)  # ['寿司', 'ラーメン', 'カレー']

3. count(): 要素の数を数える

count() は、指定した要素がリスト内に何回出現するかを数えるメソッドです。

count() で要素の数を数える

numbers = [1, 2, 3, 2, 1, 2, 4, 5]
count_2 = numbers.count(2)
print(f"2 の出現回数: {count_2}")  # 3

# 文字列でも使える
fruits = ["りんご", "バナナ", "りんご", "オレンジ", "りんご"]
count_apple = fruits.count("りんご")
print(f"りんごの数: {count_apple}")  # 3

5.3 辞書とは?「言葉(キー)」と「意味(値)」で管理

Python の「辞書(dictionary)」は、データを「キー(検索するための言葉)」と「値(対応する情報)」のペアで管理します。

実際の辞書でも、「単語」とその「意味」がセットになっています。

辞書 (Dictionary: dict)

辞書の作り方

このように辞書を作ることができます。

生徒の情報を辞書で管理

student = {
    "name": "山田太郎",  # キー: "name", 値: "山田太郎"
    "age": 16,          # キー: "age", 値: 16
    "grade": 2,         # キー: "grade", 値: 2
    "class": "A"        # キー: "class", 値: "A"
}

# 空の辞書を作る
my_dict = {}

値の取り出し方

辞書の値を取り出すには、キーを指定して取り出す方法と、get() メソッドを使う方法があります。

辞書の値を取り出す

student = {
    "name": "山田太郎",
    "age": 16,
    "grade": 2,
    "class": "A"
}

# [ ] を使って取り出す
print(student["name"])   # 山田太郎
print(student["age"])    # 16

# get() を使って安全に取り出す
print(student.get("name"))     # 山田太郎
print(student.get("height"))   # None (キーが存在しない場合)
print(student.get("height", 0))  # 0 (デフォルト値を指定)

辞書の基本操作

1. 値の追加・更新

値は、辞書を定義するタイミングで全て用意しておかなくても、後から追加したり、更新(変更)したりすることができます。

辞書の値の追加・更新

student = {"name": "山田太郎", "age": 16}

# 新しい要素の追加
student["grade"] = 2
student["class"] = "A"
print(student)  # {'name': '山田太郎', 'age': 16, 'grade': 2, 'class': 'A'}

# 値の更新
student["age"] = 17
print(student)  # {'name': '山田太郎', 'age': 17, 'grade': 2, 'class': 'A'}

2. キーと値の取得

辞書のキーと値を取得するには、keys() メソッドと values() メソッドを使います。

キーと値の取得

student = {
    "name": "山田太郎",
    "age": 16,
    "grade": 2,
    "class": "A"
}

# キーの一覧を取得
keys = student.keys()
print(list(keys))  # ['name', 'age', 'grade', 'class']

# 値の一覧を取得
values = student.values()
print(list(values))  # ['山田太郎', 16, 2, 'A']

# キーと値のペアを取得
items = student.items()
for key, value in items:
    print(f"{key}: {value}")

3. 要素の削除

要素の削除は、list の場合と同じように del や pop() を使うことができます。

要素の削除

student = {
    "name": "山田太郎",
    "age": 16,
    "grade": 2,
    "temp": "一時データ"
}

# del で削除
del student["temp"]

# pop で削除と同時に値を取得
age = student.pop("age")
print(f"取り出した年齢: {age}")
print(f"残りのデータ: {student}")

なお、タプル (tuple) についてはレッスン 11 で扱います。

5.4 辞書への要素追加・更新・削除

辞書は、作成後でも要素の追加、更新、削除が自由にできます。ただし、操作によってはエラーになる可能性があるので、安全な操作方法を覚えておくことが大切です。

辞書への要素の追加と更新

1. 新しい要素の追加

新しい要素の追加

# 空の辞書から始める
student = {}

# 要素を追加していく
student["name"] = "山田太郎"
student["age"] = 16
student["class"] = "A"

print(student)  # {'name': '山田太郎', 'age': 16, 'class': 'A'}

# 複数の要素を一度に追加
student.update({
    "grade": 2,
    "club": "サッカー部"
})

print(student)

2. 既存の要素の更新

既存の要素の更新

# 成績データの更新
scores = {
    "国語": 85,
    "数学": 78,
    "英語": 92
}

# 個別に更新
scores["数学"] = 82  # 数学の点数を更新

# 複数の要素を一度に更新
scores.update({
    "国語": 88,
    "英語": 95
})

print("=== 最新の成績 ===")
for subject, score in scores.items():
    print(f"{subject}: {score}点")

辞書からの要素の削除

1. del による削除

del による削除

student = {
    "name": "山田太郎",
    "age": 16,
    "grade": 2,
    "temp": "仮データ"
}

# 特定の要素を削除
del student["temp"]
print(student)  # tempキーが削除された辞書が表示される

2. pop による削除(値の取り出し)

pop による削除(値の取り出し)

# popで要素を削除しながら値を取得
student = {
    "name": "山田太郎",
    "age": 16,
    "grade": 2
}

# 要素を削除して値を取得
age = student.pop("age")
print(f"取り出した年齢: {age}")
print(f"残りのデータ: {student}")

# 存在しないキーでもエラーにならないpop
club = student.pop("club", "未所属")  # キーが存在しない場合のデフォルト値
print(f"部活動: {club}")  # 未所属

3. clear による全要素の削除

clear による全要素の削除

scores = {"国語": 85, "数学": 92, "英語": 78}
print(f"クリア前: {scores}")

scores.clear()  # すべての要素を削除
print(f"クリア後: {scores}")  # {}

安全な辞書の操作

1. キーの存在確認

キーの存在確認

student = {"name": "山田太郎", "age": 16}

# in を使ってキーの存在を確認
if "grade" in student:
    print(f"学年: {student['grade']}")
else:
    print("学年は登録されていません")

# キーが存在しない場合のデフォルト値を指定
grade = student.get("grade", "未設定")
print(f"学年: {grade}")

2. setdefault の使用

setdefault の使用

# キーがない場合にデフォルト値を設定して取得
scores = {"数学": 85, "英語": 92}

# 国語の点数がなければ0を設定
japanese = scores.setdefault("国語", 0)
print(f"国語: {japanese}点")
print(scores)  # {'数学': 85, '英語': 92, '国語': 0}

実践的な例

1. 商品在庫管理

商品在庫管理

# 商品の在庫管理
inventory = {
    "りんご": 25,
    "バナナ": 18,
    "オレンジ": 30
}

def update_stock(item, quantity):
    """在庫数を更新する関数"""
    if item in inventory:
        inventory[item] += quantity
        print(f"{item}の在庫を{quantity}個追加しました")
    else:
        inventory[item] = quantity
        print(f"新商品「{item}」を{quantity}個追加しました")

def check_stock(item):
    """在庫数を確認する関数"""
    return inventory.get(item, 0)

# 在庫の更新
update_stock("りんご", 5)
update_stock("メロン", 12)

# 在庫の確認
print("\n=== 在庫状況 ===")
for item, quantity in inventory.items():
    print(f"{item}: {quantity}個")

5.5 リストと辞書を上手に使い分けよう

プログラミングでは、状況に応じて適切なデータ構造を選ぶことが重要です。ここでは、リストと辞書のそれぞれの特徴を理解し、適切な使い分けができるようになりましょう。

リストと辞書の特徴

リストの特徴

  • 順番が保持される
  • インデックス(0, 1, 2...)で要素にアクセス
  • 同じ値を複数持てる
  • 要素の追加・削除が簡単

辞書の特徴

  • キーと値のペアで管理
  • 順番は保持されない
  • キーは一意(重複不可)
  • キーで素早くアクセス可能

リストが適しているケース

1. 順番が重要な場合

好きなゲームのランキング

favorite_games = ["マリオ", "ポケモン", "スプラトゥーン"]
print("ベスト3:")
for i, game in enumerate(favorite_games, 1):
    print(f"{i}位: {game}")

# 行動の手順
steps = [
    "材料を集める",
    "粉と水を混ぜる",
    "こねる",
    "発酵させる",
    "焼く"
]
print("\nパンの作り方:")
for i, step in enumerate(steps, 1):
    print(f"手順{i}: {step}")

2. 同じ種類のデータをまとめる場合

テストの点数リスト

test_scores = [85, 92, 78, 90, 88]

# 基本的な統計計算
average = sum(test_scores) / len(test_scores)
highest = max(test_scores)
lowest = min(test_scores)

print(f"平均点: {average}")
print(f"最高点: {highest}")
print(f"最低点: {lowest}")

辞書が適しているケース

1. データに名前を付けて管理する場合

生徒の情報

student = {
    "name": "鈴木花子",
    "age": 16,
    "grade": 2,
    "class": "A",
    "hobby": "バスケ",
    "favorite_subject": "数学"
}

# 必要な情報だけを取り出せる
print(f"{student['name']}さん({student['grade']}-{student['class']})")
print(f"趣味: {student['hobby']}")

2. キーと値の対応が重要な場合

国と首都の対応

capitals = {
    "日本": "東京",
    "アメリカ": "ワシントンD.C.",
    "イギリス": "ロンドン",
    "フランス": "パリ",
    "中国": "北京"
}

# 特定の国の首都を素早く検索
country = "日本"
capital = capitals.get(country, "不明")
print(f"{country}の首都は{capital}です")

組み合わせて使う

より複雑なデータ構造を作るために、リストと辞書を組み合わせることもできます:

1. リストの中に辞書を入れる

# クラスの生徒リスト
students = [
    {"name": "山田太郎", "score": 85, "club": "野球部"},
    {"name": "鈴木花子", "score": 92, "club": "バスケ部"},
    {"name": "佐藤次郎", "score": 78, "club": "サッカー部"}
]

# 各生徒の情報を表示
print("=== 生徒一覧 ===")
for student in students:
    print(f"名前: {student['name']}")
    print(f"点数: {student['score']}")
    print(f"部活: {student['club']}")
    print("------------")

2. 辞書の中にリストを入れる

生徒ごとの複数の点数を管理

score_data = {
    "山田太郎": [85, 92, 78],
    "鈴木花子": [92, 85, 90],
    "佐藤次郎": [78, 80, 85]
}

# 各生徒の平均点を計算
print("=== 成績表 ===")
for name, scores in score_data.items():
    average = sum(scores) / len(scores)
    print(f"{name}の平均点: {average:.1f}")

5.6 リスト内包表記でスマートにリストを作る

リスト内包表記(List Comprehension)は、Pythonの強力な機能の1つです。for文を使って書くコードを、より簡潔に書けます。

リスト内包表記の基本

1. 基本的な形

基本的な形

# 通常のfor文での書き方
numbers = []
for i in range(1, 6):
    numbers.append(i)
print(numbers)  # [1, 2, 3, 4, 5]

# リスト内包表記での書き方
numbers = [i for i in range(1, 6)]
print(numbers)  # [1, 2, 3, 4, 5]

2. 計算を含む場合

計算を含む場合

# 1から5までの二乗のリスト
# 通常のfor文
squares = []
for i in range(1, 6):
    squares.append(i**2)
print(squares)  # [1, 4, 9, 16, 25]

# リスト内包表記
squares = [i**2 for i in range(1, 6)]
print(squares)  # [1, 4, 9, 16, 25]

条件を使ったリスト内包表記

1. if 条件を使う

if条件を使う

# 10以下の偶数をリストにする
# 通常のfor文
evens = []
for i in range(11):
    if i % 2 == 0:
        evens.append(i)
print(evens)  # [0, 2, 4, 6, 8, 10]

# リスト内包表記
evens = [i for i in range(11) if i % 2 == 0]
print(evens)  # [0, 2, 4, 6, 8, 10]

2. 文字列の処理

文字列の処理

# 文字列の各文字を大文字にする
word = "Python"

# 通常のfor文
upper_chars = []
for char in word:
    upper_chars.append(char.upper())
print(upper_chars)  # ['P', 'Y', 'T', 'H', 'O', 'N']

# リスト内包表記
upper_chars = [char.upper() for char in word]
print(upper_chars)  # ['P', 'Y', 'T', 'H', 'O', 'N']

実践的な例

1. 点数のフィルタリング

点数のフィルタリング

scores = [85, 92, 78, 65, 90, 55, 88, 72, 80]

# 80点以上の点数を抽出
high_scores = [score for score in scores if score >= 80]
print("80点以上:", high_scores)

# 不合格(60点未満)の点数を抽出
failed_scores = [score for score in scores if score < 60]
print("不合格:", failed_scores)

2. データの変換

気温データ(摂氏)を華氏に変換

# 気温データ(摂氏)を華氏に変換
celsius = [0, 10, 20, 30, 40]
fahrenheit = [(c * 9/5) + 32 for c in celsius]

for c, f in zip(celsius, fahrenheit):
    print(f"{c}°C = {f:.1f}°F")

3. 文字列のリスト処理

文字列のリスト処理

names = ["山田太郎", "鈴木花子", "佐藤次郎"]

# 姓だけ抽出
surnames = [name[:2] for name in names]
print("姓のリスト:", surnames)

# 名前の長さをリスト化
name_lengths = [len(name) for name in names]
print("名前の長さ:", name_lengths)

複雑すぎる例(避けるべき)

複雑で読みにくい例

# 複雑で読みにくい例
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [x for row in matrix for x in row if x % 2 == 0]

# 代わりにこう書く(分かりやすい)
flattened = []
for row in matrix:
    for x in row:
        if x % 2 == 0:
            flattened.append(x)

5.7 リストと辞書を組み合わせて複雑なデータを扱う

実際のプログラムでは、より複雑なデータを扱うことが多くあります。そんな時、リストと辞書を組み合わせることで、柔軟なデータ構造を作ることができます。

基本的な組み合わせ方

1. リストの中に辞書を入れる

生徒のデータリスト

students = [
    {
        "name": "山田太郎",
        "age": 16,
        "class": "A"
    },
    {
        "name": "鈴木花子",
        "age": 15,
        "class": "B"
    }
]

# データの表示
for student in students:
    print(f"{student['name']} ({student['age']}歳) - {student['class']}組")

2. 辞書の中にリストを入れる

各教科の試験結果

test_results = {
    "数学": [85, 92, 78, 90],
    "英語": [92, 88, 85, 95],
    "国語": [88, 90, 85, 82]
}

# 教科ごとの平均点を計算
for subject, scores in test_results.items():
    average = sum(scores) / len(scores)
    print(f"{subject}の平均点: {average:.1f}")

より複雑なデータ構造

1. 成績管理システム

生徒の詳細な成績データ

students = [
    {
        "name": "山田太郎",
        "class": "3-A",
        "scores": {
            "数学": [85, 92, 88],
            "英語": [92, 85, 90],
            "国語": [88, 85, 92]
        }
    },
    {
        "name": "鈴木花子",
        "class": "3-A",
        "scores": {
            "数学": [92, 88, 95],
            "英語": [88, 92, 85],
            "国語": [90, 85, 88]
        }
    }
]

# 成績表の表示
for student in students:
    print(f"\n=== {student['name']} ({student['class']}) の成績 ===")

    for subject, scores in student['scores'].items():
        average = sum(scores) / len(scores)
        print(f"{subject}: {scores} (平均: {average:.1f})")

2. 商品管理システム

商品データベース

inventory = {
    "食品": [
        {"name": "りんご", "price": 150, "stock": 25},
        {"name": "バナナ", "price": 100, "stock": 18},
        {"name": "オレンジ", "price": 120, "stock": 30}
    ],
    "飲料": [
        {"name": "水", "price": 100, "stock": 50},
        {"name": "お茶", "price": 150, "stock": 35}
    ]
}

# 在庫状況の確認
for category, items in inventory.items():
    print(f"\n=== {category} ===")
    for item in items:
        print(f"{item['name']}: {item['price']}円 (在庫: {item['stock']}個)")

3. 図書館蔵書管理システム

図書館の蔵書データ

library = {
    "小説": [
        {
            "title": "雪国",
            "author": "川端康成",
            "status": [
                {"copy_id": "A1", "is_available": True},
                {"copy_id": "A2", "is_available": False}
            ]
        }
    ],
    "参考書": [
        {
            "title": "Python入門",
            "author": "情報太郎",
            "status": [
                {"copy_id": "B1", "is_available": True}
            ]
        }
    ]
}

# 貸出可能な本を検索
def find_available_books(library):
    available_books = []
    for category, books in library.items():
        for book in books:
            # 貸出可能な本があるかチェック
            available_copies = [
                status for status in book["status"]
                if status["is_available"]
            ]
            if available_copies:
                available_books.append({
                    "title": book["title"],
                    "category": category,
                    "copies": len(available_copies)
                })
    return available_books

# 貸出可能な本を表示
available = find_available_books(library)
print("\n=== 貸出可能な本 ===")
for book in available:
    print(f"{book['title']} ({book['category']}) - {book['copies']}冊利用可能")

4. スポーツ大会の記録管理

スポーツ大会の記録

tournament = {
    "バスケットボール": {
        "teams": [
            {
                "name": "赤組",
                "members": ["山田", "鈴木", "田中"],
                "scores": [45, 52, 38]
            },
            {
                "name": "白組",
                "members": ["佐藤", "高橋", "伊藤"],
                "scores": [42, 48, 44]
            }
        ],
        "dates": ["2024-06-01", "2024-06-02", "2024-06-03"]
    }
}

# チームごとの成績を集計
for sport, data in tournament.items():
    print(f"\n=== {sport} の記録 ===")
    for team in data["teams"]:
        total = sum(team["scores"])
        average = total / len(team["scores"])
        print(f"{team['name']}")
        print(f"メンバー: {', '.join(team['members'])}")
        print(f"得点: {team['scores']}")
        print(f"平均: {average:.1f}")

Ex.1 クラス名簿(名前・点数)を辞書で管理して平均点を求めるプログラム

クラスの成績管理プログラム

class_scores = {
    "山田太郎": 85,
    "鈴木花子": 92,
    "佐藤次郎": 78,
    "田中美咲": 95,
    "高橋健一": 88
}

# 平均点を計算
total = sum(class_scores.values())
average = total / len(class_scores)

print(f"クラスの平均点:{average:.1f}")

# 平均点以上の生徒を表示
print("\n平均点以上の生徒:")
for name, score in class_scores.items():
    if score >= average:
        print(f"{name}: {score}点")

# チャレンジ:
# - 最高点と最低点の生徒を表示してみよう
# - 点数帯(90点以上、80-89点、...)ごとの人数を集計してみよう
# - 複数の科目の点数を管理してみよう

Ex.2 好きな果物リストを作り、最初と最後の要素を表示するプログラム

好きな果物リストを作り、最初と最後の要素を表示するプログラム

# 果物リストを作成
fruits = []

# 果物を追加
while True:
    fruit = input("好きな果物を入力してください(終了はquit):")
    if fruit == "quit":
        break
    fruits.append(fruit)

# リストが空でない場合のみ表示
if fruits:
    print("\n入力された果物リスト:")
    print(fruits)
    print(f"最初の果物:{fruits[0]}")
    print(f"最後の果物:{fruits[-1]}")
    print(f"果物の総数:{len(fruits)}個")
else:
    print("果物が入力されませんでした")

# チャレンジ:
# - 果物を五十音順に並び替えてみよう
# - 重複する果物を除外してみよう
# - 果物とその好きな度合い(5段階)も記録してみよう

まとめ

この章で学んだこと:

  • リストは順序付きのデータ集合
  • 辞書はキーと値のペアでデータを管理
  • それぞれの特徴を活かした使い分けが重要
  • リスト内包表記で効率的なコード作成
  • 実践的なデータ管理の方法