①for文とrange関数
指定回数を繰り返す
for i in range(5): ※繰り返したい数の+1の数字をrange()の中に記述する
print(i)
print(range(5)) ※要素の最初と最後を抽出する
print(list(range(5)))
実行結果
0
1
2
3
4
range(0, 5)
[0, 1, 2, 3, 4]
rangeのオプションで、開始時の数を0から変えたり、ステップ(数字の増加量)を変えたりできます。
・range(n)
0からn - 1まで。
・range(n1, n2)
n1からn2 - 1まで。
・range(n1, n2, n3)
n1からn3ごとにn2 - 1まで。list(range(1, 6, 2))は、[1, 1 + 2, 1 + 2 + 2]で、[1, 3, 5]です。
・list(range(5))
※list()で()の中の要素をリスト化する。上記3つの範囲していやスキップ指定もlist()で囲むとリスト化できる
②breakとcontinue
breakとcontinueは、ループを一段だけ中断します。
forが二重ループのとき、内側のループで中断しても外側のループは中断されません。
for i in range(3):
for j in range(5):
break
print(i)
たとえば、上記のコードでは下記のように出力されます。外側のiのループは、最後まで繰り返します。
0
1
2
continue文
continue文は処理をスキップする構文です。スキップでしかないので、繰り返しの処理は継続して実行されます。
繰り返しにおけるコンティニューは「ある処理だけをスキップして続きから開始する」というものです。
break を continue に変えてみると動作が違うことがわかります。
sample_list = [1,2,3,4,5]
for v in sample_list:
if v == 3:
continue
print(v)
実行結果
1
2
4
5
3の時だけcontinueと書いている以降の処理をスキップして、繰り返しを進めています。
breakは繰り返しを全て終了しますが、continueは繰り返しをそのまま続行します。
while文でも continue を使うことが可能です。
val = 0
while val < 5:
val += 1
if val == 3:
continue
print(val)
実行結果
1
2
4
5
for文やwhile文のelseの使い方
Pythonのforやwhileではelseを書けます。elseはbreakされなかったときに実行されます。
下記のようにforの内側でifを使ってbreakする処理を書いたときに、forのelseは全ての条件が成り立たないときに処理されることになります。
for 要素 in イテラブル:
if 条件:
処理
break
else
処理 # ループの全てで条件がなりたたないとき
for文との違い
for文はリストの要素を逐一確認して、最後の要素まで繰り返すための構文です。
for文とwhile文の使い分け
for文とwhile文を使い分けるコツは繰り返す回数が決定できるのか否かです。
繰り返し回数が決まっているのであれば、for文。繰り返す回数はわからないけど終了条件は明確の場合は、while文を使います。
セイウチ演算子
・変数 := 式は、変数に式を代入してその値を返す式です。
・:=がセイウチの顔を横にしたように見えるので、セイウチ演算子と呼ばれることもあります。
・通常の代入文 変数 = 式は、文であり式ではないので、ifの条件に書くことはできません。
実例
下記は、lstの要素をstrip()して、'end'以外を取り出しています。
lst = ['pine', 'apple', 'orange', 'end ']
without_end = [t for s in lst if (t := s.strip()) != 'end']
print(without_end) # ['pine', 'apple', 'orange']