原代碼是:
def lucky_candies(a, k):
l = [0] (k-1) * [float('-inf')]
for x in a:
l = [max(l[(i-x) % k] x, y) for i, y in enumerate(l)]
return print(l[0])
lucky_candies([5000000,4000000,3000000,2000000,1000000], 9)
我試圖將其更改為我可以閱讀的內容:
def lucky_candies(a, k):
l = [0] (k-1) * [float('-inf')]
for x in a:
for i, y in enumerate(l):
l = [max(l[(i-x) % k] x, y)]
return print(l[0])
lucky_candies([5000000,4000000,3000000,2000000,1000000], 9)
但這會回傳:
IndexError:串列索引超出范圍
uj5u.com熱心網友回復:
舊代碼給出l長度串列k,而新代碼立即生成單元素串列l,因此處理索引>0 變得非法
附加max(l[(i-x) % k] x, y)到新串列
uj5u.com熱心網友回復:
result為 的每次迭代創建一個新串列(稱為)a以保存新的l。順便說一句,使用的原因是return print(l[0])什么?你可以return。
請嘗試以下操作:
def lucky_candies(a, k):
l = [0] (k-1) * [float('-inf')]
for x in a:
result = list()
for i, y in enumerate(l):
result.append(max(l[(i-x) % k] x, y))
l = result
return l[0]
>>> lucky_candies([5000000,4000000,3000000,2000000,1000000], 9)
9000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313539.html
