ある整数のリストを別のメソッドのリストで「削減」したい状況に遭遇しました。
>>> import operator
>>>
>>> OPS = [operator.add, operator.sub, operator.add]
>>> nums = [1,2,3,4]
>>>
>>> OPS[2](OPS[1](OPS[0](nums[0],nums[1]),nums[2]),nums[3])
4
for ループ:
>>> result = nums[0]
>>> for i in range(1,len(nums)):
... result = OPS[i-1](result,nums[i])
...
>>> print result
4
"キュー":
>>> result = nums.pop(0)
>>> while nums:
... result = OPS.pop(0)(result, nums.pop(0))
...
>>> print result
4
operator.add などの 1 つのメソッドを数値のリストに適用したいだけの場合は、reduce を使用できます。
>>> reduce(operator.add, [1,2,3,4])
10
演算子の 1 つとオペランドのもう 1 つの 2 つのリストを結合するのに似たようなものはありますか?