空飛ぶチンアナゴの統計解析日記

統計解析を嗜むチンアナゴのメモ帳です

f文字列って便利ですね

何を今更と言われそうだけど、f文字列の便利さにあらためて感動している。

今更のf文字列

docs.python.org
使い方は単純で文字列の頭にfをつけて挿入したい変数を{}で囲む。

name = "Taro"
print(f"Hello, {name}")

という感じ。

これが動的に変数を作るときに便利

今までname1〜10までの変数を作ってそれに名前を一つずつ入れる場合*1、exec関数の中身を文字列を結合してコードを書くと

name_list = ['Taro', 'Jiro', 'Saburo', 'Shiro', 'Goro', 'Rokuro', 'Nanaro', 'Hachiro', 'Kuro', 'Juro']
for num in range(10):
    exec("name" + str(num+1) + "=" + "name_list[num]")
    exec("print('name" + str(num+1)+  ":', " + "name" + str(num+1) + ")")

というめんどくさいコードになる
これをf文字列を使うと

name_list = ['Taro', 'Jiro', 'Saburo', 'Shiro', 'Goro', 'Rokuro', 'Nanaro', 'Hachiro', 'Kuro', 'Juro']
for num in range(10):
    exec(f"name{num+1} = name_list[num]")
    exec(f"print('name{num+1}:', name{num+1})")

とさっきのものよりは格段に読みやすくなる。

こんなに便利ならもっと早く使っておけばよかったと軽く後悔しているw

おまけ:辞書でやると

name_array = {}
for num in range(10):
    name_array[f'name{num+1}'] = name_list[num]
    print(f'name{num+1}: ', name_array[f'name{num+1}'])

こんな感じです。
正直変数を10個作るよりかは辞書に格納した方が管理も楽ですね。
辞書の中身は単一の値以外にもリスト、辞書、データフレーム等色々使えるので、とても便利です。

*1:それ辞書でやれよというツッコミは今日はナシで