Pythonコードを簡潔にするリスト内包表記入門 基本構文から実務での活用法まで

【作業自動化】Python
スポンサーリンク

Pythonのコードを劇的にすっきりと整理できる記法として、リスト内包表記があります。

リスト内包表記を使いこなせるようになると、コードの行数が削減されるだけでなく、可読性や処理速度の向上にもつながり、洗練されたPythonコードを書くための重要なステップとなります。

VBAやGoogle Apps Script(GAS)など、他の言語に触れた方にとっても、Pythonならではの直感的な記述スタイルは魅力的に感じられるはずです。

今回は基本から実務での活用例まで順を追って確認していきましょう!

【作業自動化】Pythonの記事を見る 

リスト内包表記が選ばれる理由

通常、リスト(配列)を生成してデータを加工する場合、以下の3つのステップを踏みます。

  1. 空のリストを準備する
  2. for文で繰り返し処理を実行する
  3. appendメソッドで加工した要素を末尾に追加する

これに対して、リスト内包表記を用いると、これらの処理をわずか1行で完結させることが可能となります。コードがシンプルになることで、全体の構造が一目で把握しやすくなります。

基本構文と従来のfor文との比較

0から4までの整数をそれぞれ2倍にしたリストを作成する例を用いて、記述の違いを比較してみましょう。

従来のfor文による記述例

numbers = []
for i in range(5):
    numbers.append(i * 2)
print(numbers)
# 出力: [0, 2, 4, 6, 8]

リスト内包表記による記述例

numbers = [i * 2 for i in range(5)]
print(numbers)
# 出力: [0, 2, 4, 6, 8]

角括弧 [] の中に直接 for 文を取り込む点が最大の特徴です。基本構文は以下の通りです。

[追加したい要素 for 変数 in イテラブル]

処理の順序としては、後ろのfor文でデータから要素を順に取り出し、先頭の式で加工した結果を新しいリストへ格納していくイメージとなります。

条件分岐を組み合わせたデータの抽出

リスト内包表記のメリットとして、if文によるフィルタリング処理も1行の中に組み込める点が挙げられます。

例えば、0から9までの数値の中から偶数のみを抽出し、それらを2乗したリストを作成する場合を考えてみましょう。

従来のfor文による条件分岐

result = []
for i in range(10):
    if i % 2 == 0:
        result.append(i ** 2)
print(result)

リスト内包表記による条件付き抽出

result = [i ** 2 for i in range(10) if i % 2 == 0]
print(result)

構文の末尾にif条件を追加するだけで、条件に合致したデータのみを選択的に加工して新しいリストを構築できます。

リスト内包表記を活用するメリットと実務上の注意点

主なメリット

  • コード量の削減と視認性の向上: 複数行にわたる処理が1行にまとまるため、画面内に収まるコード量が増え、ロジックの見通しが良くなります。
  • 処理速度の向上: ループ処理が最適化されているため、通常のfor文とappendを組み合わせるよりも高速に動作する傾向があります。
  • 処理意図の明確化: 「既存のデータから加工された新しいリストを生成する」という目的がコード構造そのものから明確に伝わります。

実務上の注意点

  • 複雑な多重ループや過剰な条件分岐への配慮: if-elseが幾重にも入り組んだ処理や、複数のfor文をネストした内包表記は、かえって可読性を損ねる原因となります。
  • 目的と手段のバランス: 単に1行で短く書くこと自体を目的にせず、コードの読みやすさや保守性を優先し、必要に応じて通常のfor文を選択する判断も大切となります。

実務で役立つ具体的な活用シーン

業務自動化やスクレイピング、データ前処理の実務において頻出する具体的な活用パターンをご紹介します。

文字列データの前処理と空白除去

raw_data = ["  Apple ", " Banana", "Orange  "]
clean_data = [fruit.strip() for fruit in raw_data]
print(clean_data)
# 出力: ['Apple', 'Banana', 'Orange']

特定のデータだけ抽出

files = ["data.csv", "image.png", "report.csv", "note.txt"]
csv_files = [f for f in files if f.endswith(".csv")]
print(csv_files)
# 出力: ['data.csv', 'report.csv']

まとめ

リスト内包表記は、初めて目にする際は少し戸惑われるかもしれませんが、構造を一度理解すると便利な記法となります。

日常の業務自動化コードの中で「空リスト作成から始まるfor文」を見かけた際には、ぜひ「リスト内包表記でよりシンプルに書けないか」を意識してみてください!

【作業自動化】Pythonの記事を見る 


Pythonの本は種類が多すぎて、業務効率化に使えるのか見分けるのが大変ですよね。実務自動化に5年以上携わってきた私が、「デスクワークの自動化に即戦力になった本」を厳選して紹介します。失敗しない1冊を見つけたい方は、ぜひ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【作業自動化】PythonITスキル未分類
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました