Pythonを用いたプログラミングにおいて、数値が偶数か奇数かを判断する処理は、条件分岐の基礎でありながら、データ選別やアルゴリズム構築において非常に重要な役割を果たします。
この記事では、最も基本的な剰余演算子を用いた判定方法から、パフォーマンスを意識したビット演算、さらにはリストの中から偶数だけを出力したり、特定の範囲の奇数の和を求めたりといった応用テクニックまで詳しく解説していきます。
![]() 執筆者:マヒロ |
|
- OS:Windows 11 / macOS Sequoia
- IDE:Visual Studio / VS Code / IntelliJ IDEA
- その他:Chrome DevTools / 各言語最新安定版
※本メディアでは、上記環境にてコードの動作と情報の正確性を検証済みです。
Pythonにおける偶数・奇数判定の基本手法
プログラミングの世界で偶数と奇数を判定する際、最も標準的かつ直感的な方法は、その数値を2で割ったときの「余り」を確認することです。
まずは、初心者の方でもすぐに使える基本的なロジックと、計算速度を重視する場面で役立つ特殊な手法の2つを紹介します。
剰余演算子(%)を使った判定
num = 15
# 2で割った余りが0なら偶数、そうでなければ奇数
if num % 2 == 0:
print(f"{num} は偶数です")
else:
print(f"{num} は奇数です")
実行結果
15 は奇数です
このプログラムでは、対象となる数値を変数 num に代入し、剰余演算子である「%」を使用して判定を行っています。
この演算子は左の数値を右の数値で割った際の「余り」を計算結果として返すため、num % 2 の結果が 0 であれば2で割り切れる、つまりその数値は偶数であると論理的に結論づけることができます。
逆に、余りが 1 であれば割り切れないため、その数値は奇数として分類されます。
Pythonの条件分岐である if 文と組み合わせることで、非常にシンプルに偶数か奇数かを判定するロジックを実装できるのが特徴です。
ビット演算(&)を利用した高速判定
num = 24
# 最下位ビットが0なら偶数、1なら奇数
if num & 1:
print(f"{num} は奇数です")
else:
print(f"{num} は偶数です")
実行結果
24 は偶数です
コンピュータ内部での数値表現を利用したこの手法では、数値をビット単位で比較しています。
全ての奇数は、2進数で表現した際に「最下位ビット(一番右側の桁)」が必ず 1 になるという数学的な性質を持っています。
そのため、数値と 1 の論理積を求めるビット演算子「&」を使用し、結果が 1(真)であればその数値は奇数、0(偽)であれば偶数であると瞬時に判断することが可能です。
通常の割り算よりも処理コストが低いため、大量のデータを高速に処理する必要がある場面で非常に重宝されるテクニックと言えるでしょう。
リスト内の偶数だけを出力・抽出する方法
実務では、単一の数値判定よりも、大量の数値が格納されたリストの中から特定の条件に合うものだけを取り出す処理が多用されます。
ここでは、複数のデータの中から効率的にPythonで偶数・奇数のリストを整理・抽出するための、Pythonらしい柔軟な書き方を学びましょう。
for文とif文を使った基本的な抽出
numbers = [1, 12, 15, 22, 33, 40, 55]
even_numbers = []
for n in numbers:
if n % 2 == 0:
even_numbers.append(n)
print(f"偶数が見つかりました: {n}")
print("最終的な偶数リスト:", even_numbers)
実行結果
偶数が見つかりました: 12
偶数が見つかりました: 22
偶数が見つかりました: 40
最終的な偶数リスト: [12, 22, 40]
このコードでは、まず複数の数値が含まれたリスト numbers を定義し、それを for 文で一つずつ取り出しています。
取り出された各要素に対して先ほどの剰余演算を用いた判定を行い、条件に合致した(偶数であった)場合のみ、あらかじめ用意しておいた空のリスト even_numbers に append() メソッドで追加していく仕組みとなっています。
この一連のプロセスを経ることで、膨大なデータセットの中から偶数だけを出力し、新しいリストとして再構築することが可能になります。
リスト内包表記を用いたスマートな実装
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# リスト内包表記で偶数のみを抽出
even_only = [x for x in numbers if x % 2 == 0]
print("抽出された偶数リスト:", even_only)
実行結果
抽出された偶数リスト: [2, 4, 6, 8, 10]
Pythonの強力な機能の一つである内包表記を活用したこの書き方は、先ほどの複数行にわたる処理をわずか1行で完結させています。
ブラケット [] の中に、取り出す要素、繰り返しの条件、そしてフィルタリングの条件を順番に記述することで、コードの可読性を大幅に向上させているのが分かります。
初心者からプロフェッショナルまで広く愛用されているこの記法は、単にコードを短くするだけでなく、内部的な最適化によって処理速度も向上するため、モダンな開発環境では欠かせないスキルとなっています。
奇数に関する応用処理:カウントと合計計算
偶数の判定ができるようになれば、次は奇数に焦点を当てた集計処理に挑戦してみましょう。
特定の範囲内で条件を満たすPythonでの奇数判定を行いながら、その個数や合計値を正確に算出するアルゴリズムを構築していきます。
条件に合う奇数の数を数える方法
numbers = [1, 5, 8, 10, 13, 17, 20, 21]
odd_count = 0
for n in numbers:
if n % 2 != 0:
odd_count += 1
print(f"リスト内の奇数の数: {odd_count}個")
実行結果
リスト内の奇数の数: 5個
ここでは、リストの中に存在する奇数の総数を算出するプログラムを作成しています。
不一致を意味する比較演算子 != を用いて、2で割った余りが 0 ではない(=奇数である)ケースを抽出し、その度に変数 odd_count の値を 1 ずつ増やしていくカウンターの役割をさせています。
データ分析やログ解析において「異常値や特定の属性を持つデータの出現頻度を調べる」といったシーンで、このPythonで奇数の数を数えるロジックは非常に汎用性が高いと言えます。
while文を使った奇数の和の算出
limit = 10
i = 1
odd_sum = 0
while i <= limit:
if i % 2 != 0:
odd_sum += i
i += 1
print(f"1から{limit}までの奇数の合計値: {odd_sum}")
実行結果
1から10までの奇数の合計値: 25
このコードでは、while 文を使用して特定の範囲内における数値を走査し、その中で発見された奇数のみを加算していくwhile文による奇数の和の算出を行っています。
変数 i をインクリメントしながらループを継続し、奇数判定を通過した値だけを変数 odd_sum に足し合わせることで、最終的な累計値を求めています。
このように、繰り返しの回数が明確でない場合や、特定の条件を満たすまで計算を続けたい場合には、for 文よりも while 文の方が適しているケースがあるため、状況に応じた使い分けが重要となります。
Pythonのスキルを活かして年収を上げる方法
以上、Pythonで偶数・奇数を判定する方法について解説してきました。
Pythonエンジニアの需要は非常に高いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。
なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。
| 年収アップにこだわりたい方 (平均アップ額138万円の実績) | テックゴー |
| 未経験・経験者問わず幅広く探したい方 | ユニゾンキャリア |
| 業界に精通した担当者に相談したい方 | キッカケエージェント |
| ゲーム業界への転職を志望する方 | ファミキャリ |
| エンジニア未経験からキャリアを築く方 | イーチキャリア |



