在Python中將列表中所有元素的值減1的最Python化和優雅的方式是什麼?Python:將列表中的所有元素相乘,但先減1 1.
即,計算(p [0] -1)*(p [1] -1)* ... *(p [n-1] -1)其中n是列表p的大小。
在Python中將列表中所有元素的值減1的最Python化和優雅的方式是什麼?Python:將列表中的所有元素相乘,但先減1 1.
即,計算(p [0] -1)*(p [1] -1)* ... *(p [n-1] -1)其中n是列表p的大小。
>>> l = [5, 8, 7, 2, 3]
>>> reduce(lambda x, y: x*(y-1), l, 1) #multiply each item by its subtracted value
336
>>>
感謝@AChampion另一個改進
注意:'reduce'在py3的'functools'中。你可以在reduce中減去一個:'reduce(lambda x,y:x *(y-1),l,1)'。 – AChampion
使用functools.reduce在python3隨着AJ的例子:
>>> l = [5, 8, 7, 2, 3]
>>> l = [item-1 for item in l] #subtract 1
>>> functools.reduce(lambda x, y: x*y, l) #multiply each item
336
>>>
通過解釋代碼的作用來增強對代碼的回答。解釋你的代碼將有助於未來用戶理解正在發生的事情,並根據自己的需求調整你的答案。 –
有很多種方法繁殖的所有元素一個可迭代的。
所以,對於一個列表a
就可以了,例如:
prod([x-1 for x in a])
functools.reduce(lambda x, y: x*y, [x-1 for x in a])
result=1
for x in [x-1 for x in a]: result*=a
請注意,我用的列表理解:[x-1 for x in a]
,但它也可以用numpy的實現:array(a)-1
相關問題:What's the Python function like sum() but for multiplication? product()?
爲什麼downvote? –
result = 1
for x in p:
result *= x - 1
恩,downvote究竟是什麼? –
您的答案被標記爲低質量;可能是因爲你沒有解釋如何或爲何回答這個問題。我認爲downvote來自低質量隊列。 – Ben
@Ben好吧,這可能會解釋它。 Morons不會被打擾閱讀這個問題,並且認爲即使是最明顯且自明的代碼也需要用額外的文本來稀釋...... –
請閱讀並按照幫助發帖準則文檔。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在您發佈代碼並準確描述問題之前,我們無法有效幫助您。 StackOverflow不是一個編碼或教程服務。 – AChampion