今回はまとめた変数、データを管理するためのリストと辞書について勉強してゆきます。
前回はこちら

リスト
Pythonの「リスト」は、複数の値を1つの変数にまとめて管理できる便利なデータ型です。
例えば、1週間の曜日やテストの点数などを1つの変数にまとめるときに使えます。
リストの作り方
リストは []
(角かっこ)を使って作成し、カンマ(,
)で区切ります。
numbers = [1, 2, 3, 4, 5]
fruits = ["apple", "banana", "cherry"]
このように、リストを使うと複数のデータを簡単に管理できます。
リストを作るとき、空のリストも作成できます。
empty_list = []
また、リストには異なる種類のデータ(整数、文字列、真偽値など)を入れることもできます。
mixed_list = [1, "hello", 3.14, True]
リストの要素を取り出す
リストの要素は、インデックス(番号)を使って取得できます。
Pythonのリストは0番目から始まるので注意しましょう。
fruits = ["apple", "banana", "cherry"]
print(fruits[0]) # apple
print(fruits[2]) # cherry
後ろから数える場合は、負のインデックスを使えます。
print(fruits[-1]) # cherry
print(fruits[-2]) # banana
リストとループ(for文・while文)
リストの中のデータを1つずつ取り出して処理するには、「ループ(繰り返し処理)」が便利です。
Pythonでは for
文と while
文の2種類が使えます。
for文でリストを操作する
for文を使うと、リストの要素を順番に取り出して処理できます。
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
出力:
apple
banana
cherry
fruit
には fruits
の各要素が順番に入ります。
1回目のループでは "apple"
、2回目では "banana"
、3回目では "cherry"
になります。
while文でリストを操作する
while文を使うと、条件を満たしている間、繰り返し処理を行えます。
numbers = [1, 2, 3, 4, 5]
index = 0
while index < len(numbers):
print(numbers[index])
index += 1
出力:
1
2
3
4
5
index という変数を使ってリストの要素を1つずつ取り出しています。
index += 1 で index を増やし、リストの最後まで処理します。
課題7-1
以下のリストを作成して、最初の要素と最後の要素を表示してください。
colors = ["red", "blue", "green", "yellow"]
解答例はこちら
print(colors[0]) # 最初の要素
print(colors[-1]) # 最後の要素
課題7-2
以下のリストの2番目の要素を "grape"
に変更してください。
fruits = ["apple", "banana", "cherry"]
解答例はこちら
fruits[1] = "grape"
print(fruits) # ["apple", "grape", "cherry"]
課題7-3
次のリストから[30, 40]
だけを取り出して表示してください。
numbers = [10, 20, 30, 40, 50]
解答例はこちら
print(numbers[2:4]) # [30, 40]
課題7-4
次のリストの合計を計算してください。
numbers = [10, 20, 30, 40, 50]
解答例はこちら
ちょっとずるをしました。せっかくなのでfor文で組み立ててみましょう。
Pythonにはこうしたずる機能が沢山ありますのでやりたいことがあればまず調べてみる事をお勧めします。
print(sum(numbers)) # 150
辞書
Pythonの辞書(dictionary)は、「キー(key)」と「値(value)」をセットにしてデータを管理できるデータ型です。
たとえば、名前と年齢、科目と点数などのペアを管理するときに便利です。
辞書の作り方
辞書は {}
(中かっこ)を使って作成し、キーと値を :
で結びます。
person = {"name": "Alice", "age": 18, "city": "Tokyo"}
このように、「name」には "Alice"、「age」には 18、「city」には "Tokyo" というデータを登録できます。
辞書を作るとき、空の辞書も作成できます。
empty_dict = {}
キーには文字列や数値を使えますが、リストなど変更可能なデータ型は使えません。
student_scores = {
"math": 85,
"english": 90,
"science": 95
}
辞書の要素を取り出す
辞書の値を取り出すときは、キーを指定します。
person = {"name": "Alice", "age": 18, "city": "Tokyo"}
print(person["name"]) # Alice
print(person["age"]) # 18
注意! 存在しないキーを指定するとエラーになります。
エラーを防ぐには .get()
を使うと便利です。
print(person.get("job", "データなし")) # "データなし" を返す
辞書の要素を変更・追加
要素を変更する
person["age"] = 19
print(person) # {"name": "Alice", "age": 19, "city": "Tokyo"}
新しいキーと値を追加
person["job"] = "Engineer"
print(person) # {"name": "Alice", "age": 19, "city": "Tokyo", "job": "Engineer"}
辞書の要素を削除
del person["city"]
print(person) # {"name": "Alice", "age": 19, "job": "Engineer"}
辞書とループ(for文・while文)
for文で辞書を操作する
for文を使うと、辞書のキーや値を順番に取り出せます。
キーを取り出す
student_scores = {"math": 85, "english": 90, "science": 95}
for subject in student_scores:
print(subject) # math, english, science
値を取り出す
for score in student_scores.values():
print(score) # 85, 90, 95
キーと値を両方取り出す
for subject, score in student_scores.items():
print(f"{subject}: {score}")
出力:
math: 85
english: 90
science: 95
while文で辞書を操作する
while文を使う場合は、list()
を使ってキーをリストに変換すると便利です。
student_scores = {"math": 85, "english": 90, "science": 95}
keys = list(student_scores.keys())
index = 0
while index < len(keys):
key = keys[index]
print(f"{key}: {student_scores[key]}")
index += 1
課題7-5
次の辞書を作成し、「名前」と「年齢」を表示してください。
person = {"name": "Bob", "age": 20, "city": "Osaka"}
解答例はこちら
print(person["name"]) # Bob
print(person["age"]) # 20
課題7-6
次の辞書に "hobby": "soccer"
を追加し、年齢を 21
に変更してください。
person = {"name": "Bob", "age": 20, "city": "Osaka"}
解答例はこちら
person["hobby"] = "soccer"
person["age"] = 21
print(person)
課題7-7
次の辞書のデータをすべて表示してください。
student_scores = {"math": 70, "english": 85, "science": 90}
解答例はこちら
for subject, score in student_scores.items():
print(f"{subject}: {score}")
.items()
を使うと、キーと値を同時に取得できます。
課題7-8
次の辞書の点数の合計を計算してください。
scores = {"math": 80, "english": 90, "science": 85}
解答例はこちら
total = sum(scores.values())
print(total) # 255
次回はこちら