Pythonでリストの各要素に指定した演算を適用するプログラムの作成方法
数値のリスト nums と、"+"、"-"、"/"、"*" などの演算子を表す文字列 op、さらに値 val が与えられたとします。このとき、nums 内のすべての数値に対して val を用いた演算を実行し、その結果をリストとして返すプログラムを作成します。
たとえば、入力が [5, 3, 8]、演算子が *(掛け算)、val が 3 の場合、出力は [15, 9, 24] となります。
解決のための手順
- 結果を格納するための新しい空のリスト
resを作成する numsの各要素iについて、以下の処理を繰り返す:opが'+'の場合:resの末尾にi + valを追加するopが'-'の場合:resの末尾にi - valを追加するopが'*'の場合:resの末尾にi * valを追加する- それ以外の場合(
valがゼロでないとき):resの末尾にi // val(整数除算の商)を追加する
resを返す
実装例
理解を深めるために、以下の実装を見てみましょう。
class Solution:
def solve(self, nums, op, val):
res = []
for i in nums:
if op == '+':
res.append(i + val)
elif op == '-':
res.append(i - val)
elif op == '*':
res.append(i * val)
elif val:
res.append(i // val)
return res
ob = Solution()
nums = [5, 3, 8]
print(ob.solve(nums, '*', 3))
入力
[5, 3, 8]
出力
[15, 9, 24]
コードの解説
このコードでは、まず空のリスト res を初期化し、for ループを使って nums の各要素を順番に処理しています。if 文による条件分岐で演算子 op の種類を判定し、対応する演算結果を append() メソッドで res に追加していきます。
特に注目すべき点は、除算の処理における elif val: という条件です。これは val が非ゼロであることを確認してから除算を行うことで、ゼロ除算エラー(ZeroDivisionError)を防いでいます。また、除算には整数除算演算子 // を使用しているため、結果は常に整数として得られます。
このアルゴリズムの計算量は O(n)(n はリストの要素数)であり、各要素を一度だけ処理するため非常に効率的です。
-
【Python】リストから最大値・最小値・2番目に大きい値・2番目に小さい値を求める方法
この記事では、Pythonを使ってリスト(配列)の中から最大値、最小値、2番目に大きい値(second largest)、2番目に小さい値(second smallest)を一度に見つけるプログラムを解説します。ソートを行わずに1回のループで処理できるのがポイントです。アルゴリズム全体の流れは以下の3ステップです。ステップ1:リストの要素を入力する ステップ2:各要素を取り出し、リスト内の他の数値と順に比較する ステップ3:最大値・最小値・2番目に大きい値・2番目に小さい値を取得して表示するサンプルコード# リスト内の最大値・最小値・2番目に大きい値・2番目に小さい値を求める def maxm
-
Pythonでリスト内の最大値・最小値の位置を見つける方法
Pythonでは、リスト内の最大値や最小値を求めるのが非常に簡単で、それらの位置(インデックス)も簡単に取得できます。Pythonには便利な組み込み関数が用意されており、min()はリスト内の最小値を求め、max()はリスト内の最大値を求めます。さらに、index()を使えば特定の要素のインデックス(位置)を調べることができます。 アルゴリズム maxminposition(A, n) /* Aはユーザーが入力したリスト、nはリストのサイズ */ ステップ1:組み込み関数を使って最小要素の位置を求める A.index(min(A)) ステップ2:組み込み関数を使って最