print((lambda m: [0, 1][m-1] if m<=2 else (lambda dp: ([(dp.append(dp[i-1]+dp[i-2])) for i in range(2, m)], dp[m-1])[1])([0, 1]))(int(input())))
lambda m: ...
定義一個匿名函數,參數是 m,用來處理計算
[0, 1][m-1] if m<=2 else ...
如果 m<=2,直接回傳 dp[m-1](即 [0, 1][0] 或 [0, 1][1])
否則進入 else 部分
(lambda dp: ...)([0, 1])
定義另一個匿名函數,參數是 dp(初始值 [0, 1])
使用 list comprehension [(dp.append(dp[i-1] + dp[i-2])) for i in range(2, m)] 來填充 dp 陣列
dp.append(dp[i-1] + dp[i-2]) 計算費氏數列並加入 dp
由於 append 回傳 None,這個 list comprehension 會產生一個 [None, None, ..., None] 的列表,但我們只關心 dp 的變化,所以忽略它
(..., dp[m-1])[1] 是一個 tuple,我們取第二個元素 dp[m-1] 作為結果