こんにちは。Takuyaです。
今回は for
文についてです。
for
文は繰り返し同じ処理を行いたい時に使用する構文です。
その for
文の中で変数名の数字を変えたい、そんな時は exec()
関数を使いましょう。
連番の付いた変数を順番に処理したい
例えば、
str_1 = 'おはようございます'
str_2 = 'こんにちは'
str_3 = 'こんばんは'
上記のように、連番の付いた変数について、同じ処理をしたい場合などに exec()
関数が使えます。
この場合、連番の付いた変数を全て表示したい時、次のように書きたくなるかもしれません。
str_1 = 'おはようございます'
str_2 = 'こんにちは'
str_3 = 'こんばんは'
for i in range(1,4):
print(str_i)
これを実行すると、NameError: name 'str_i' is not defined
となります。
ただの文字列として扱われてしまうんですね。
こんな時に使うのが exec()
関数です。次のように書きます。
str_1 = 'おはようございます'
str_2 = 'こんにちは'
str_3 = 'こんばんは'
for i in range(1,4):
exec_command = 'print(str_' + str(i) + ')'
exec(exec_command)
上記の実行結果
今回は Google Colaboratory で確認しました。
今回は、for
文の中で変数名の数字を変えたい という時のexec()
関数を使う方法をご紹介しました。
連番の付いた変数を作りたい
逆に、連番付きの変数を作りたい場合、これもexec()
を使いましょう。
for i in range(1,4):
exec_command2 = 'data_' + str(i) + '=' + str(i) + '**2'
exec(exec_command2)
print(f'data_1 : {data_1}')
print(f'data_2 : {data_2}')
print(f'data_3 : {data_3}')
上記の実行結果
data_1 : 1
data_2 : 4
data_3 : 9
リストや辞書を使うことも検討してみてください
for
文の中の変数名の数字を変えたい時の方法としてexec()
関数を使う方法をご紹介しました。
連番が付いた変数名をfor
文で上手く処理したい場合はこの方法になってしまいますが、連番が付いた変数名をリストや辞書に置き換えることを検討してみてください。
例えば、リストを使うと、こう書けます。
str_list = ['おはようございます', 'こんにちは', 'こんばんは']
for str in str_list:
print(str)
print('=====')
print(str_list[0])
print(str_list[1])
print(str_list[2])
変数名に連番を付けたいケースのほとんどは、リスト、もしくは、辞書で実現できると思います。
リスト、辞書については下記記事でまとめていますので、参考にしてください。
Google Colaboratory
本記事に掲載しているコードは Google Colaboratory で動作を確認しています。
下記からアクセスして、ご自身のGoogleドライブにコピーしていただければ、すぐに実行できます。
環境構築の不要な Google が提供している Webサービスなので、Python を学習中の方にはオススメです。
以上です。
コメント