我试图找出一种pythonic的描述性方法来乘以一个数字列表,只要数字不为零,就可以提高到相应的数字。这是我正在做的一个简单版本,我将因素列表硬编码为 [2, 3, 5]:
>>> import operator
>>> ## numbers could be written as lambda factor_list, power_list: [[factor_list[i]...
>>> numbers = lambda x, y, z: [[2, 3, 5][i] ** [x, y, z][i] for i in xrange(3)
if [x, y, z][i] != 0]
>>> product = lambda numbers: reduce(operator.mul, numbers, 1)
>>> numbers(1, 0, 0)
[2]
>>> product(numbers(1, 0, 0))
2
>>> numbers(1, 2, 3)
[2, 9, 125]
>>> product(numbers(1, 2, 3))
2250
我可以把它写成一个带有for循环的函数,如果幂值等于0,它可以简单地避免任何额外的乘法;例如if n !=0: product *= f ** n
并根据需要循环。我觉得列表推导和 lambda 可能是更好的选择。