我在網上找到了這個代碼,但不確定“任何”在那里做什么!?
def fibonacci(count):
fib_list = [0, 1]
any(map(lambda _: fib_list.append(sum(fib_list[-2:])),
range(2, count)))
return fib_list[:count]
print(fibonacci(20))
uj5u.com熱心網友回復:
本質上,該any函式將不斷回圈遍歷可迭代輸入,直到值為真。輸入是 map 的結果,它永遠不會為 True,因為 fib_list.append 總是 None。
uj5u.com熱心網友回復:
如果您想查看代碼,您只需元組或列出并列印地圖值:
def fibonacci(count):
fib_list = [0, 1]
print(tuple(map(lambda _: fib_list.append(sum(fib_list[-2:])),range(2, count))))
return fib_list[:count]
print(fibonacci(20))
#output
(None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
any如果需要,您可以跳過并用元組或串列替換它
鏈接到any檔案https://docs.python.org/3/library/functions.html?highlight=any#any
uj5u.com熱心網友回復:
any() 函式強制 lambda 遍歷迭代器的每個元素。在沒有 for 回圈陳述句的情況下進行回圈有點麻煩。
為了更簡潔的方法,您可以使用遞回并提供起始值約定作為引數 (0,1: 現代) 或 (1,1: 古代):
fibo = lambda n,a,b: [a] fibo(n-1,b,a b) if n>1 else [a]
輸出:
print(*fibo(10,0,1))
0 1 1 2 3 5 8 13 21 34
print(*fibo(10,1,1))
1 1 2 3 5 8 13 21 34 55
如果不想使用遞回,可以將其設為串列推導式:
fibo = lambda n: [ab.append(sum(ab)) or ab.pop(0)
for ab in [[0,1]] for _ in range(n)]
print(*fibo(10))
0 1 1 2 3 5 8 13 21 34
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324095.html
