簡體   English   中英

為什么我的理解列表不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM