Python問題集を解いてみよう!!

【Python】for 文の中で変数名の数字を変えたい

for文の中で変数名の数字を変えたい
URLをコピーする
URLをコピーしました!
Takuya

こんにちは。Takuyaです。

今回は for 文についてです。

for 文は繰り返し同じ処理を行いたい時に使用する構文です。

その for 文の中で変数名の数字を変えたい、そんな時は exec() 関数を使いましょう。

本ブログは Colofulbox で運用しています
目次

連番の付いた変数を順番に処理したい

例えば、

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 Colab での実行結果

今回は 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])

変数名に連番を付けたいケースのほとんどは、リスト、もしくは、辞書で実現できると思います。

リスト、辞書については下記記事でまとめていますので、参考にしてください。

おすすめのPython参考書

Google Colaboratory

本記事に掲載しているコードは Google Colaboratory で動作を確認しています。

下記からアクセスして、ご自身のGoogleドライブにコピーしていただければ、すぐに実行できます。

環境構築の不要な Google が提供している Webサービスなので、Python を学習中の方にはオススメです。

以上です。

スポンサーリンク

for文の中で変数名の数字を変えたい

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!

コメント

コメントする

目次
閉じる