Pythonらしいfor文を書くためのテクニック集

基本的なfor文

for ループ内の変数名 in イテラブルオブジェクト:
    処理

イテラブルオブジェクトとは、文字列、リスト、ディクショナリ、タプル、セットなどの要素を順番に取り出すことのできるオブジェクトのことです。例えば、リストから要素を順番に取り出して出力するプログラムは以下のように書けます。

mylist = [1, 2, 3, 4, 5]
for n in mylist:
     print(n) 
#1
#2
#3
#4
#5

他の言語を先に学んだ方は、以下のように書きがちですが、これはPythonらしくありません

mylist = [1, 2, 3, 4, 5]
for i in range(len(mylist)):
     print(mylist[i]) 
#1
#2
#3
#4
#5

インデックスも同時に取り出したい場合には以下のようにします。

mystr = "abcde"
for i, s in enumerate(mystr):
    print(i, s)
#0 a
#1 b
#2 c
#3 d
#4 e

他の言語を先に学んだ方は、以下のように書きがちですが、これはPythonらしくありません

mystr = "abcde"
for i in range(len(mystr)):
    print(i, mystr[i])
#0 a
#1 b
#2 c
#3 d
#4 e

以下のような書き方もPythonらしくないので、やめてください

mystr = "abcde"
i = 0
for c in mystr:
    print(i, c)
    i += 1
#0 a
#1 b
#2 c
#3 d
#4 e

ディクショナリの場合は、for文で回すと以下のようになります。

mydict = {"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}
for key in mydict:
     print(key) 
#a
#b
#c
#d
#e

ディクショナリのキーが順番に取り出されてきます。ディクショナリの値も一緒に取り出したい場合には、以下のようにします。

for key, value in mydict.items():
    print(key, value)
#a 1
#b 2
#c 3
#d 4
#e 5

他の言語を先に学んだ方は、以下のように書きがちですが、これはPythonらしくありません

for key in mydict:
    print(key, mydict[key])
#a 1
#b 2
#c 3
#d 4
#e 5

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です