
Table of Contents(目次)
forループとデータ構造の関係を理解する
このレクチャーでは、for文を使っていろいろなデータ構造からどのように値が取り出されるかを確認していきます。今回は「どんなデータをforで回すと、何が取り出されるのか」に注目していきましょう。
list、tuple、set、dict、string の5種類を順に実行し、出力を見ながら違いを確認していきましょう。
1. listをforで回す
listは順番を持ったデータの集まりです。for文で回すと、最初の要素から順に取り出されていきます。
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
出力例:
apple
banana
cherry
このように、最初から順番に1つずつ取り出されています。for文では変数fruit
にlistの中の要素が順に代入されています。
2. tupleをforで回す
tupleもforでの扱い方はlistと同じです。
coordinates = (10, 20, 30)
for x in coordinates:
print(x)
出力例:
10
20
30
同じように1つずつ値が取り出されています。
tupleを要素に持つlistをforで回すこともできます。
points = [(1, 2), (3, 4), (5, 6)]
for point in points:
print(point)
出力例:
(1, 2)
(3, 4)
(5, 6)
さらにアンパックして使うこともできます。
points = [(1, 2), (3, 4), (5, 6)]
for x, y in points:
print(f'x={x}, y={y}')
出力例:
x=1, y=2
x=3, y=4
x=5, y=6
for文でのアンパックは、変数をx, y
のようにカンマで区切る構文を、for
とin
の間に記述して定義します。処理が繰り返されるたびに、listの要素であるtupleが取り出され、tupleの要素が順番に変数x
, y
へ代入されます。
3. setをforで回す
setをforで回すと要素を1つずつ取り出せますが、順番は保証されません。
colors = {'red', 'green', 'blue'}
for color in colors:
print(color)
出力例(実行するたびに順序が変わる可能性あり):
green
red
blue
setは順序を持たないため、実行するたびに出力順が変わることがあります。
4. dictをforで回す
dictは「キーと値の組み合わせ」を持つデータ構造です。forで回すとき、何を取り出すかによって挙動が変わります。
(1) dictをそのままforで回す → keyが取り出される
prices = {'apple': 120, 'banana': 100, 'orange': 150}
for key in prices:
print(key)
apple
banana
orange
(2) .values()を使う → 値が取り出される
prices = {'apple': 120, 'banana': 100, 'orange': 150}
for value in prices.values():
print(value)
120
100
150
(3) .items()を使う → (key, value)のタプルを取り出す
prices = {'apple': 120, 'banana': 100, 'orange': 150}
for item in prices.items():
print(item)
('apple', 120)
('banana', 100)
('orange', 150)
(4) .items()の結果をアンパックする
prices = {'apple': 120, 'banana': 100, 'orange': 150}
for key, value in prices.items():
print(f'{key} → {value}円')
apple → 120円
banana → 100円
orange → 150円
5. stringをforで回す
stringもforで回すことができ、この場合は1文字ずつ取り出されます。
word = 'Hello'
for ch in word:
print(ch)
H
e
l
l
o
英語でも日本語でも、1文字ずつ順番に取り出されます。
greeting = 'こんにちは'
for ch in greeting:
print(ch)
こ
ん
に
ち
は
6. まとめ(for文の共通点と本質)
ここまでで、list、tuple、set、dict、stringをforで回したときに、どのようにデータが取り出されるかを確認しました。
データ構造 | 取り出されるもの | 備考 |
---|---|---|
list | 要素を順に | 順序あり |
tuple | 要素を順に | 順序あり |
set | 要素を順に(順不同) | 順序なし |
dict | keyを順に(またはvalue/items) | .items() でアンパック可能 |
string | 1文字ずつ | 日本語もOK |
for文はどのデータ構造でも、中の要素を1つずつ取り出して処理するという点が共通しています。これがfor文の本質です。