①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']