Pythonのfor文やif文を1行で書く方法

公開日: 2025-10-14

Pythonを書いているときに、「もっとコードを短く、スッキリ書けないかな?」と思ったことはありませんか?

私自身、エンジニアとして10年以上Pythonを書いてきましたが、最初の頃はfor文やif文を1行で書くワンライナー構文にかなり苦戦しました。

この記事では、Pythonのfor文if文を「1行で書く方法」を、初心者でも理解できるようにやさしく解説します。 「1行で書ける」と聞くと難しそうに感じるかもしれませんが、ポイントを押さえれば誰でも使えるようになります。

まずはおさらい:Pythonのfor文とif文の基本

「1行で書く方法」を理解するには、まず普通の書き方を押さえておくことが大事です。
ここで一度、基本の形を復習しておきましょう。

# 通常のfor文
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
    print(fruit)

このコードは、「fruits」というリストを順番に取り出して出力しています。

結果はこうなります

apple
banana
orange

とてもシンプルですね。 次にif文の基本も見てみましょう。

x = 10
if x > 5:
    print("xは5より大きいです")
else:
    print("xは5以下です")

これも基本的な構文ですが、慣れないうちはインデント(字下げ)やコロンの位置でつまずきやすいです。 しかしPythonには、こうした処理を1行にまとめるスマートな書き方が存在します。

for文を1行で書くには?「内包表記」がカギ

Pythonでfor文を1行に書く代表的な方法は、リスト内包表記(List Comprehension)です。

これはPython独特の文法で、リストを作るときによく使われます。 普通に書くと4〜5行かかる処理を、1行でスッキリ書けるのが魅力です。

例:リストの要素を2倍にする

以下は、リストの要素を2倍にするサンプルコードです。

numbers = [1, 2, 3, 4, 5]
doubled = [n * 2 for n in numbers]
print(doubled)

結果は以下の通り。

[2, 4, 6, 8, 10]

同じ処理を普通のfor文で書くと、こうなります。

numbers = [1, 2, 3, 4, 5]
doubled = []
for n in numbers:
    doubled.append(n * 2)
print(doubled)

つまり、4行かかっていた処理が1行で書けるようになるんです。
これが「内包表記(Comprehension)」の強さです。

if文を1行で書く方法:「三項演算子」

if文にも1行で書く方法があります。 Pythonでは「条件式(三項演算子)」という形で書けます。

基本構文は以下の通りです。

A if 条件 else B

これは「条件がTrueならA、FalseならBを返す」という書き方です。
少し例を見てみましょう。

x = 10
result = "大きい" if x > 5 else "小さい"
print(result)

実行すると、以下のように表示されます。

大きい

もしxが3だったら、「小さい」と表示されます。 一見難しそうですが、「ifの前がTrueのとき」「elseの後がFalseのとき」と考えると覚えやすいです。

for文+if文を1行で組み合わせる

Pythonでは、for文とif文を同時に1行にまとめることもできます これは「内包表記+条件式」を組み合わせたテクニックです。

例:偶数だけを取り出す

以下は、偶数だけを取り出すサンプルコードです。

numbers = [1, 2, 3, 4, 5, 6]
evens = [n for n in numbers if n % 2 == 0]
print(evens)

出力結果は、以下のようになります。

[2, 4, 6]

「for n in numbers」でループしつつ、「if n % 2 == 0」で偶数のみ抽出しています。
これを普通に書くと、以下のようになります。

evens = []
for n in numbers:
    if n % 2 == 0:
        evens.append(n)

同じ処理が、ここまでスッキリ1行になるのは気持ちいいですよね。

一覧で整理!Pythonのfor文・if文ワンライナーまとめ

ここまで紹介してきた内容を、わかりやすく表にまとめました。

処理内容 通常の書き方 1行での書き方
for文 for item in list: … [処理(item) for item in list]
if文 if 条件: … else: … A if 条件 else B
for+if for item in list: if 条件: … [処理(item) for item in list if 条件]
for+if+else for item in list: if 条件: … else: … [A if 条件 else B for item in list]

ワンライナーを使いこなすための練習ステップ

いきなり全部1行で書こうとすると混乱します。
そこで、私が新人エンジニアを教えるときによく勧めている「3ステップ練習法」を紹介します。

  1. まずは通常のfor文・if文で書く
  2. 中の処理を1行にまとめてみる
  3. それを内包表記や条件式に置き換える

たとえば「奇数だけを2倍にする」処理を考えてみましょう。

ステップ1

まずは通常のfor文・if文で書いてみましょう。

numbers = [1, 2, 3, 4, 5]
result = []
for n in numbers:
    if n % 2 == 1:
        result.append(n * 2)
print(result)

ステップ2

「append」の部分を意識して1行にできそうだなと考えます。

ステップ3

「append」の部分を内包表記や条件式に置き換えます。 最終形はこうなります。

result = [n * 2 for n in numbers if n % 2 == 1]
print(result)

こうやって、少しずつ慣れていくと自然と身につきます。

実務での注意点:1行に書きすぎない!

ここまで「1行で書く方法」を紹介してきましたが、1行で書ける=1行で書くべきではありません。 エンジニア歴10年の経験から言うと、可読性を犠牲にしてまで短くするのは逆効果です。

特に初心者がやりがちなミスがこちらです。

# NG例:読みづらい
result = [x * 2 if x % 2 == 0 else x + 1 for x in numbers if x > 0 and x < 100]

一見「かっこいい」ですが、後から見返すと何をしているか分かりにくい。 チーム開発では他の人も読むので、「短い」より「読みやすい」を優先するのが鉄則です。

まとめ

最後にこの記事のポイントをまとめます。

  • for文やif文は「内包表記」や「三項演算子」で1行にできる
  • ただし、読みやすさを最優先する
  • 実務では「短いより、わかりやすい」が大事
  • 慣れるためには、まず普通の書き方で理解すること

Pythonの良さは、読みやすさにあります。 その文化を大切にしながら、1行構文を便利なツールとして取り入れていくのがベストです。

ここまでお読みいただき、ありがとうございました!

Pythonの基礎から応用まで学べる
Python WebAcademy

Python WebAcademyでは、Pythonの基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。
また、ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。

Pythonの学習を始める