【Python】for文の使い方を実例でわかりやすく解説。範囲や条件の指定方法やbreak, continue, passの使い方

【Python】for文の使い方を実例でわかりやすく解説。範囲や条件の指定方法やbreak, continue, passの使い方 Python
記事内に広告が含まれていることがあります。

Pythonで多用する、for文の使い方をlist(配列)、range(範囲)、tuple(タプル)に対して使う方法や、スライスを使ってループする範囲を指定する方法や、

if文と組み合わせる方法やbreak, continue, passの使い方などを実例を用いて解説しています。

複雑な組み合わせで使われることが多く、難しそうに見えますが、基本構文は要素を2つ指定するだけでとてもシンプルです。

for文の基本構文

for a in A:
  • 「a」:変数(任意)
  • 「A」:データ
  • 「:」:行末に設置(ないとエラーになる)

▼データについて補足(上記の「A」)
・文字列や数値に対して実行することが多い。
・変数で指定することが多い。
・listやtupleなど複数要素の集合体や、1つの数値や文字列を直接記述する形でも機能する。

for文の処理の内容

Aの要素を1つ取り出し、変数(上記では「a」)に格納する。これを要素の数だけ繰り返す

1つの要素を取り出す毎に、2行目以降に記述した処理を実行する。

※処理はインデント(TABキー)でfor文より下げる。

for文の実例

・listの要素を取り出す(数値、文字列)
・タプル(tuple)型やセット(set)型に使う
・range関数で数値を取り出す
・if文で抽出条件を指定する

listの要素を取り出す

数値と文字列、変数指定と直接記述の実例。変数の数値要素の取り出し

for a in A:
list = [1,2,3]

for a in list:
    print(a)

#出力
1
2
3

変数の文字列要素の取り出し

list = ["AAA","BBB","CCC"]

for a in list:
    print(a)

#出力
AAA
BBB
CCC

数値直接指定

for a in [1,2,3]:
    print(a)

#出力
1
2
3

文字列直接指定

for a in ["AAA","BBB","CCC"]:
    print(a)

#出力
AAA
BBB
CCC



タプル(tuple)型やセット(set)型にも使える。タプル(tuple)型

tuple = "AAA","BBB", "CCC"
tuple   #出力:('AAA', 'BBB', 'CCC')
type(tuple)   #出力:tuple

for a in tuple:
    print(a)

#出力
AAA
BBB
CCC

セット(set)型

set = {1,1,2,2,3,3,3,4}
set   #出力:{1, 2, 3, 4}
type(set)   #出力:set

for a in set:
    print(a)

#出力
1
2
3
4

補足:タプル(tuple)の説明はこちら

range関数の数値を取り出す

for文においてrange型に格納されているデータの取扱はlist型と同じ。

例1:range(5)

0~4の範囲で変化量+1に該当する数値。
⇒ [0, 1, 2, 3, 4]

for a in range(5):
    print(a)

#出力
0
1
2
3
4

例2:range(0,8,2)

0~7の範囲で変化量+2に該当する数値。
⇒ [0, 2, 4, 6]

for a in list(range(0,8,2)):
    print(a)

#出力
0
2
4
6

補足:range関数について

「初期値」「範囲の終わり値」、「変化量」の3つを指定し、該当する数値をrange型で格納する関数。
※「初期値」と「変化量」は省略可

range関数の詳細はこちら

範囲を指定して取り出す

スライスを使うことで対象範囲を指定すことが可能。

スライスとは?

listなどの範囲指定方法の一種。
[ ]と:で範囲を指定する記法。

スライスの基本構文


[a:b:c]
 └「a」:開始の配列番号
 └「b」:終了の配列番号(未満)
 └「c」:変化量構文

b,cは省略可能

スライスの細かい説明はこちら

開始する番号を指定する方法

例: 3つめの要素以降を取り出す場合

[2:]
 └要素は0からカウント
 開始する番号を指定

list = [1,2,3,4,5,6,7,8,9]

for a in list[2:]:
     print(a)

#出力
3
4
5
6
7
8
9

取り出す範囲を指定する方法

例: 5番目から8番目の要素を抜き出す

[4:8]
 └要素は0からカウント
 └ 配列番号4は5つ目の要素
 └ 配列番号8は9つ目の要素
 └ 配列番号8は含まない(処理終了)
 開始する番号を指定

list = [1,2,3,4,5,6,7,8,9]

for a in list[4:8]:
     print(a)

#出力
5
6
7
8

取り出す範囲と変化量を指定

例: 50~70までで3づつ足した値を取り出す

[50:71:3]
 └ 配列番号50番目
 └ 配列番号71番目で終了(71番目の値は含まない)
 └ 変化量:3づつ増加

range(1,100) は1~99までの整数。

for a in range(1,100)[50:71:3]:
    print(a)

#出力
51
54
57
60
63
66
69



if文で条件を指定する

if文を使うことで、指定条件に一致した値のみ抽出することが可能。

>if文についてはこちら

例1: for文とif文の組み合わせ

1~9の数値の中から偶数のみ取り出す。
(10は含まない)偶数のみ取り出す

for a in range(1,10):
    if a%2 == 0:
        print(a)

#出力
2
4
6
8
  • 「%」余り
  • 「a%2==0」aを2で割った余りが0(=偶数)
     

例2: for文とif文の組み合わせ


1~100の数値の中から偶数かつ、90以上で、100を含まない数値を、list型で抜き出す。
(101は含まない)比較演算子の組み合わせ

list = []

for a in range(1,101):
    if a%2 == 0 and a >= 90 and not a == 100:
        list.append(a)

list

#出力
# [90, 92, 94, 96, 98]


if文と共によく使われる制御文

if文と共によく使われる制御文
  1. break文:処理を終了
  2. continue文:処理をスキップ
  3. pass文:何もしない

break文

指定条件で処理を終了する。break文の基本構文(if文中)

if A:
   break

条件Aなら処理を中断する。

break文の実用例

1~20のうち偶数を抜き出す。
もし、aが10より大きくなったら処理を終了。break文の実用例

for a in range(1,20):
    if a%2 == 0:
        if a > 10:
            break
        print(a)

#出力
2
4
6
8
10

continue文

指定条件で処理をスキップする。continue文の基本構文(if文中)

if A:
   continue

 条件Aは処理をスキップ。その他は実行。

continue文の実用例1


0~4を一つづつ抜き出す。ただし、3のみスキップする。

for a in range(0,5):
    if a == 3:
        continue

    print(a)

#出力
0
1
2
4

continue文の実用例2


0~10のうち偶数をスキップして抜き出す。(奇数のみ抜き出す)

for a in range(0,11):
    if a%2 ==0  :
        continue

    print(a)

#出力
1
3
5
7
9

continueというと処理を継続するように聞こえるが、実際の処理はスキップになる。

pass文

記述してもしなくても処理は変わらない。
処理しないことを明示するために記述。


▼if文での使われ方
elseの処理で何も指定していないことを明示するために記述することが多い。passの基本構文

if A:
    AAA
else:
    pass

条件「A」の場合は処理「AAA」を実行。
それ以外の場合は何もしない。

▼処理は以下と同じ。

if A:
    AAA

passが処理に影響を及ぼさないことの確認

passは複数つけてもないものとみなされる。
※インデントを無視したり、条件式中に書くと構文エラーになる。

▼(元の処理)1~10の偶数を抜き出す処理

list = []
for a in range(1,11):
    if a%2 == 0:
        list.append(a)
list

#出力
[2, 4, 6, 8, 10]

passあり①

list = []
for a in range(1,11):
    if a%2 == 0:
        pass
        list.append(a)
list

#出力
[2, 4, 6, 8, 10]

passあり②

list = []
for a in range(1,11):
    if a%2 == 0:
        list.append(a)
        pass
list

#出力
[2, 4, 6, 8, 10]

passあり③

list = []
for a in range(1,11):
    pass
    pass
    if a%2 == 0:
        pass
        pass
        pass
        list.append(a)
        pass
list

#出力
[2, 4, 6, 8, 10]



▼構文の書き方の条件から外れた場合はエラー
passエラー①

list = []
for a in range(1,11):
    if a%2 == 0: pass
        list.append(a)
list

#出力
# IndentationError: unexpected indent

passエラー②

list = []
for a in range(1,11):
    if a%2 == 0:
        pass pass
        list.append(a)
list

#出力
# SyntaxError: invalid syntax
タイトルとURLをコピーしました