0
我试图找出一种pythonic,描述性方法来乘以一个数字列表,并将其提高到相应的数字,只要该数字不是零。下面是我在做什么,在这里我硬编码的因素[2,3,5]列表的简单版本:Python:如果n不为零,则优化因子到n的因子链的乘积
>>> 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是作为一个潜在更好的选择。
你有问题吗? –
你是否有理由避开这种繁殖?有可能它不会产生可测量的差异,或者由于额外的检查和分支而使速度变慢。 – delnan
@Jon编写代码有很多种方法,我想发布我的代码,看看我是否错过了python的质量,这将是..更好的pythonic。我发现每次找出其中的一个,我的编码就会变得更好。 – Cole