IndexError: list index out of range: When changing code format
IndexError: list index out of range: When changing code format
原代码为:
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)
但是这个returns:
IndexError: list index out of range
旧代码给出长度为 k
的列表 l
,而新代码立即生成单元素列表 l
,因此处理索引>0 变得非法
将 max(l[(i-x) % k] + x, y)
添加到新列表
为 a
的每次迭代创建一个新列表(称为 result
)以保存新的 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
原代码为:
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)
但是这个returns:
IndexError: list index out of range
旧代码给出长度为 k
的列表 l
,而新代码立即生成单元素列表 l
,因此处理索引>0 变得非法
将 max(l[(i-x) % k] + x, y)
添加到新列表
为 a
的每次迭代创建一个新列表(称为 result
)以保存新的 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