[英]Why does my comprehension list do not work?
您好,這是我在Python中的代碼:
test = [test[i-1]+3 if i > 0 else 4 for i in range(0, 10)]
我的問題是我想為此使用一個理解列表:
test[0] = 4
test[i] = test[i-1]+3 if i > 0
我想使用理解列表來執行此操作。
您不需要為此進行任何形式的遞歸。 您想要的最終列表是
[4, 7, 10, 13, ...] # 4 + 0, 4 + 3, 4 + 6, 4 + 9, ...
您可以簡單地定義為
test = [4 + 3*i for i in range(10)]
如果需要遞歸(如果更改公式或條件),則可以使用以下遞歸解決方案:
from functools import lru_cache
@lru_cache(maxsize=None)
def f(n):
return f(n - 1) + 3 if n > 0 else 4
test = [f(i) for i in range(10)]
print(test)
輸出:
[4, 7, 10, 13, 16, 19, 22, 25, 28, 31]
使用itertools.accumulate
另一個版本,無需遞歸:
from itertools import accumulate
print(list(accumulate(4 if i==0 else 3 for i in range(10))))
打印:
[4, 7, 10, 13, 16, 19, 22, 25, 28, 31]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.