概要
- sample_cd01...sample_cd50のような、連続したパターンを効率的に生成しリストに格納する方法として、Pythonのリスト内包表記を利用しました。
- 本記事ではそのサンプルコードを紹介します。ついでに、「文字列の連結」で行う場合も記載しています。
サンプルコードの解説
- 以下のように、
sample_cd01
、sample_cd02
...って連番のDBカラムってよくありますよね。そんな時に、リストリテラルで作成すると面倒です。
sample.py
sample_cd_values = ['sample_cd01', 'sample_cd02', 'sample_cd03', 'sample_cd04', 'sample_cd05',
'sample_cd06', 'sample_cd07', 'sample_cd08', 'sample_cd09', 'sample_cd10']
- Pythonのリスト内包表記を使用することで、効率的に書くことができます。
- リスト内包メソッドはPythonicで読みやすいとか
- もし
sample_cd50
までほしい場合は、以下のように書きます。
sample_cd_values = [f"sample_cd{i:02d}" for i in range(1, 51)]
- 上記により、
sample_cd01
からsample_cd50
までの値を生成できます。 -
f"sample_cd{i:02d}"
はフォーマット済みの文字列を生成するための記法です-
i
:ループ変数 -
:02d
:2桁の0埋め数値であることを指定。これを消すと01
ではなく1
になってしまいます-
{i:02d}
:値を2桁のゼロパディングされた数字にフォーマットするための構文
-
-
range(1, 51)
:1から50までの範囲を指定
-
- これにより、手動で01から50までの値を書く必要がなくなりました。
format()
メソッドを使用する場合...
sample.py
sample_cd_values = ["sample_cd{:02d}".format(i) for i in range(1, 51)]
for
文を普通に使用する場合...
sample.py
sample_cd_values = []
for i in range(1, 51):
sample_cd = f"sample_cd{i:02d}"
sample_cd_values.append(sample_cd)
- こちらは、簡潔さに欠け、コード行数も多くなります。ただ、リスト内包に不慣れな場合直感的なわかりやすさはあるなと思いました。
文字列の連結を使用する場合
- 以下の方法でも可能です。実際に会社で扱ったプログラムでは以下の
for
文の方法をみたことがあります。
sample.py
sample_cd_values = ["sample_cd" + str(i).zfill(2) for i in range(1, 51)]
sample.py
sample_cd_values = []
for i in range(1, 51):
sample_cd = 'sample_cd' + str(i).zfill(2)
sample_cd_values.append(sample_cd)