以下代码的输出为[1, 3, 6, 10]
。我知道如何获得1和3而不是6和10。
在第一个循环中,第一个列表项1等于[my_list[0]]
,3等于[out_list[len(out_list)-1] + my_list[i]]
在第二个循环中,out_list = 4 + [1 + 3] = 8
不是6 ...
def mystery(my_list):
out_list = [my_list[0]]
for i in range(1, len(my_list)):
out_list += [out_list[len(out_list)-1] + my_list[i]]
print(out_list)
mystery([1, 2, 3, 4]) #output[1, 3, 6, 10]
我非常接近理解它,只需要更多解释。我对吗?第一个循环,out_list = 1,[out_list [len(out_list)-1] = 1,my_list [i]] = 2,因此,[1,3]。第二个循环,out_list保持不变,然后我就被困在这里......
答案 0 :(得分:0)
out_list[len(out_list)-1]
只是out_list中的最后一项,与out_list[-1]
相同。lst += [smtn]
与执行lst.append(smtn)
这会让你的功能更具可读性吗?
def mystery(my_list):
out_list = [my_list[0]]
for i in range(1, len(my_list)):
out_list.append(out_list[-1] + my_list[i])
print(out_list)
此代码返回一个列表,其i项是输入的前i个项的总和。在i迭代中,您获取i-1项的总和(存储在i-1中),并从列表中添加第i项。 3 = 1 + 2,6 =(1 + 2)+ 3,10 =(1 + 2 + 3)+4。如果my_list中的下一项是5,则out_list中的下一项将是10 + 5 = 15.
编辑: 为了澄清更多,请分阶段进行。
my_list = [1,2,3,4]
我们输入方法out_list = [my_list[0]]
。所以现在out_list = [1]
。out_list[len(out_list)-1] + my_list[i]
= out_list[0] + my_list[1]
= 1 + 2
= 3
。 out_list = [1,3]
out_list[len(out_list)-1] + my_list[i]
= out_list[1] + my_list[2]
= 3 + 3
= 6.
out_list = [1,3,6]
out_list[len(out_list)-1] + my_list[i]
= out_list[2] + my_list[3]
= 6 + 4
= 10.
out_list = [1,3,6,10]
答案 1 :(得分:0)
output = mystery([1, 2, 3, 4]) # [1, 3, 6, 10]
output == [1, 1+2, 1+2+3, 1+2+3+4]
答案 2 :(得分:0)
my_list最初是:[1,2,3,4] out_list最初是:[1]
每个iter的1次迭代列表中的out_list:[1] 我在这里:1 len(out_list):1 my_list [i]:2 使用以下语句添加下一个元素:out_list + = [out_list [len(out_list)-1] + my_list [i]] 在这里查看:out_list [0]给1添加到2
每个iter的2次迭代列表中的out_list:[1,3] 我在这里:2 len(out_list):2 my_list [i]:3 使用以下语句添加下一个元素:out_list + = [out_list [len(out_list)-1] + my_list [i]] 在这里查看:out_list [1]给出3将其添加到3
每个iter的3次迭代列表中的out_list:[1,3,6] 我在这里:3 len(out_list):3 my_list [i]:4 使用以下语句添加下一个元素:out_list + = [out_list [len(out_list)-1] + my_list [i]] 在这里查看:out_list [2]给出6将其添加到4
最后输出为:[1,3,6,10]
out_list + = [out_list [len(out_list)-1] + my_list [i]]此语句将前一个元素追加到out_list中,即为什么使用out_list + =而不是out_list =所以仅在第3次和第4次迭代中结果为6和10
答案 3 :(得分:-1)
一种非常容易实现这一目的的pythonic方式:
def summer_foo(my_list):
return [sum(my_list[:i+1]) for i in range(len(my_list))]
简要说明
len(my_list)
i
如果i
等于0,您将获得第一个元素。
如果i
等于1,您将获得第一个和第二个元素的总和(i
属于[0,2))
等等......