Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリスト内の奇数要素の合計を求める方法

n個の要素を持つリスト nums が与えられたとします。このリストに含まれるすべての奇数要素の合計を求める必要があります。

問題の例

たとえば、入力が以下のような場合を考えてみましょう。

nums = [5, 7, 6, 4, 6, 9, 3, 6, 2]

このリストに含まれる奇数は 5, 7, 9, 3 の4つであり、その合計は 5 + 7 + 9 + 3 = 24 となります。したがって、出力は 24 になります。

解決のアプローチ

この問題は、Pythonのリスト内包表記(list comprehension)を使うことで、簡潔に解くことができます。手順は以下のとおりです。

  • リスト内包表記を使って、nums 内の各要素 e のうち、奇数であるものだけを新しいリスト l に集めます。
  • 集めたリスト l を組み込み関数 sum() に渡し、要素の合計値を返します。

実装例

それでは、実際のコードを見てみましょう。

def solve(nums):
   return sum([i for i in nums if i % 2 == 1])

nums = [5, 7, 6, 4, 6, 9, 3, 6, 2]
print(solve(nums))

入力

[5, 7, 6, 4, 6, 9, 3, 6, 2]

出力

24

コードの解説

このコードのポイントは、条件式 i % 2 == 1 の部分です。各要素を2で割った余りが1であれば、その要素は奇数だと判定できます。リスト内包表記によって、奇数だけを抽出したリストが一時的に作成され、sum() 関数がその合計を計算して返します。

なお、よりメモリ効率を重視する場合は、リスト全体を作らずにジェネレータ式を使う方法もあります。

def solve(nums):
   return sum(i for i in nums if i % 2 == 1)

どちらの書き方でも結果は同じですが、要素数が非常に多いリストを扱う場合は、ジェネレータ式の方が中間リストを生成しないため効率的です。

  1. Pythonでリストの累積和(累積合計)を求める方法

    この記事では、リストの累積和(累積合計)を求める問題の解決策について詳しく解説します。問題文あるリストが与えられたとき、各要素までの累積和を格納した新しいリストを作成する必要があります。例えば、[10, 20, 30, 40, 50] というリストが与えられた場合、出力は [10, 30, 60, 100, 150] となります。これは、各位置でそれ以前の要素をすべて足し合わせた値です。実装例それでは、実際の実装を見ていきましょう。# 累積和を求める関数 def Cumulative(l): new = [] cumsum = 0 for element in l:

  2. リスト内の要素の合計を求めるPythonプログラム

    この記事では、Pythonを使ってリスト内のすべての要素の合計を求める方法について、具体的なコード例とともに解説します。問題の定義リストが入力として与えられたとき、そのリストに含まれるすべての要素の合計値を計算する必要があります。例えば、[1, 2, 3, 4, 5]というリストが与えられた場合、出力は 15(1+2+3+4+5)となります。この問題を解くためのアプローチは主に2つあります。1つは組み込み関数を使用する方法、もう1つはブルートフォース(総当たり)方式でループ処理を行う方法です。方法1:組み込み関数 sum() を使うPythonには標準で用意されている組み込み関数 sum()