我遇到了一種情況,我想通過另一個方法列表「減少」一列整數。用另一個方法列表「減少」列表的習慣用法
>>> 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,我可以使用減少。
>>> reduce(operator.add, [1,2,3,4])
10
是否有類似的組合兩個列表,一個操作符和另一個操作數?
謝謝,希望有更多的 「可讀性」 的解決方案。 – DTing 2011-04-26 02:19:34