0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Python】sample_cd01...sample_cd50のような連続したパターンをリスト内包表記で効率的に生成する方法

Posted at

概要

  • sample_cd01...sample_cd50のような、連続したパターンを効率的に生成しリストに格納する方法として、Pythonのリスト内包表記を利用しました。
  • 本記事ではそのサンプルコードを紹介します。ついでに、「文字列の連結」で行う場合も記載しています。

サンプルコードの解説

  • 以下のように、sample_cd01sample_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)
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?