6.1 for
ループ
Pythonではリストの要素をループするために
for
ループをよく使うよ。これがリストの各要素に対してコードブロックを実行する最も一般的な方法だね。
for
ループの基本
Pythonのfor
ループはリストの各要素を順に見ていき、for
の後に指定した変数に一時的に現在の要素の値を割り当てるんだ。例を見てみよう:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
リストを逆順にループしたい場合はスライスを使うことができるよ:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits[::-1]:
print(fruit)
6.2 インデックス付きfor
ループ
通常のfor
ループでリストを回るだけでなく、for
ループにrange()
関数を組み合わせて使うこともできるよ。これにより要素だけでなく、その位置も使ってデータを扱うことができるんだ。
インデックス付きイテレーションの基本
各要素のインデックスにアクセスしながらリストをループするには、次の方法を使えるよ:
my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
print(f'Index: {i}, Element: {my_list[i]}')
インデックスを使う利点
ループでインデックスを使うことで、要素にアクセスするだけでなく、 リストの要素をその場で変更することができるよ。これはイテレーション中にリストを変更したい時に特に便利だね。
例:
my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
my_list[i] = my_list[i] * 2
複雑な操作の例
インデックスを使うことで、リストの複数の要素に同時にアクセスする必要がある操作を簡単に実装できるよ。例えば、現在の要素を前の要素や次の要素と比較するときに便利だね:
例:
my_list = [3, 5, 2, 9, 4]
for i in range(1, len(my_list)):
if my_list[i] > my_list[i - 1]:
print(f'{my_list[i]} is greater than {my_list[i - 1]}')
6.3 enumerate()
関数の使用
Pythonでは
enumerate()
関数が、リストの要素をインデックスと一緒にイテレーションするのに便利な方法を提供してくれるんだ。これはインデックスと要素の両方を扱う必要がある場合に特に役立つよ。
enumerate()
関数の基本
enumerate()
関数はリストを特殊なオブジェクトで包んで、インデックスと要素のペアを生成するイテレーターを返すんだ:
my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
print(f'Index: {index}, Element: {element}')
これで要素だけでなくそのインデックスも手に入れることができるね。
enumerate()
の利点
enumerate()
を使うことで、コードがより読みやすくなり、手動でインデックスをrange(len(...))
を使って管理する必要がなくなるよ。これで要素の変更、アクセスや条件付きチェックがより簡単にできるんだ。
使用例
enumerate()
はリストの要素を変更したり、そのインデックスと比較したりする必要があるタスクに最適だよ:
my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
if index % 2 == 0:
print(f'Element {element} at even index {index}')
6.4 while
ループ
for
について話したので、今度はwhile
ループについて話そうね。このループもリストの要素を扱うときに便利だよ。
while
ループは条件をチェックするところから始まるんだ。条件が真であれば、ループの本体が実行され、それから条件が再び確認される。このプロセスは条件が偽になるまで繰り返されるんだ。
リストをループする例
例えば、数字のリストがあって、特定の値に出会うまでループしたいとしよう:
numbers = [1, 2, 3, 4, 5, -1, 6]
i = 0
while i < len(numbers) and numbers[i] != -1:
print(numbers[i])
i += 1
for
ループとあまり変わらないよね?でも、リストの要素を扱うのにインデックスを使う必要がない場合もあるんだ。例えば、何かのタスクがリストに保存されていて、それをリストから一つずつ取り出して実行し、リストから削除する必要があるときとかね。
このコードをスキーマ的に書くとこんな感じになるよ:
tasks = [1, 2, 3, 4, 5, -1, 6]
while len(tasks) > 0:
task = tasks.pop()
print(task)
GO TO FULL VERSION