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