import math
def lista_fact(list, k):
for n in list:
result = math.factorial(n) / (math.factorial(k) * math.factorial(n - k))
return result
print(res)
lista = [4, 6, 5]
print(lista_fact(lista, 3))
關于代碼的輸出僅向我顯示串列中最后一個元素的階乘結果。我應該如何編碼以從該串列中獲取所有元素?
uj5u.com熱心網友回復:
您應該將結果更改為如下串列:
def lista_fact(list, k):
result = []
for n in list:
result.append(math.factorial(n) / (math.factorial(k) * math.factorial(n - k)))
return result
print(res)
lista = [4, 6, 5]
print(lista_fact(lista, 3))
uj5u.com熱心網友回復:
import math
def factorial_list(my_input: list, k: int) -> list:
results = []
for n in my_input:
current_result = math.factorial(n) / (math.factorial(k) * math.factorial(n - k))
results.append(current_result)
return results
def factorial_list_one_liner(my_input: list, k: int) -> list:
results = [math.factorial(n) / (math.factorial(k) * math.factorial(n - k)) for n in my_input]
return results
def main():
input_list = [4, 6, 5]
results_list = factorial_list(my_input=input_list, k=3)
print(results_list)
results_list = factorial_list_one_liner(my_input=input_list, k=3)
print(results_list)
return
if __name__ == '__main__':
main()
uj5u.com熱心網友回復:
一個簡短的回答
def lista_fact(nlist, k): # 0
fk = math.factorial(k) # 1
return [math.factorial(n) // (fk * math.factorial(n - k)) for n in nlist] # 2
引數重命名為
listpython 單詞fk:優化
整數除法
串列理解
順便說一句,該函式需要針對大量數字進行優化例如基于其他解決方案統計:Python中的組合(基本函式是二項式函式)我們可以使用類似的東西:
binomial_reduce = lambda n, k : reduce(int.__mul__, range(n-k 1, n 1)) // math.factorial(k)
def binomial_reduce_list(nlist, k):
return [binomial_reduce(n, k) for n in nlist]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429192.html
標籤:Python python-3.x 列表 数学 阶乘
