sec03 - Pythonのforループで学ぶ:list・tuple・dict・set・stringの扱い方
スポンサーリンク

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のようにカンマで区切る構文を、forinの間に記述して定義します。処理が繰り返されるたびに、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要素を順に(順不同)順序なし
dictkeyを順に(またはvalue/items).items()でアンパック可能
string1文字ずつ日本語もOK

for文はどのデータ構造でも、中の要素を1つずつ取り出して処理するという点が共通しています。これがfor文の本質です。

スポンサーリンク