为什么这两个功能没有给我相同的答案?
why is this two functions not giving me the same answer?
编写一个名为 append_sum 的函数,它有一个参数——一个名为 named lst 的列表。
该函数应将 lst 的最后两个元素相加并将结果附加到 lst。它应该执行此过程三次,然后 return lst。
例如,如果 lst 以 [1, 1, 2] 开始,那么最终结果应该是 [1, 1, 2, 3, 5, 8].
解决方案-1
def append_sum(lst):
lst.append(lst[2] + lst[1])
lst.append(lst[2] + lst[1])
lst.append(lst[2] + lst[1])
return lst
print(append_sum([1, 1, 2]))
ans = [1, 1, 2, 3, 3, 3]
解法-2
def append_sum(lst):
lst.append(lst[-1] + lst[-2])
lst.append(lst[-1] + lst[-2])
lst.append(lst[-1] + lst[-2])
return lst
print(append_sum([1, 1, 2]))
ans = [1, 1, 2, 3, 5, 8]
考虑:lst[2]
是一个绝对索引,而lst[-1]
是一个相对索引,基于列表的长度。如果列表超过 3 个元素(其中 lst[2]
可以工作),那么 lst[2]
仍然会给出相同的答案,无论列表有多大。但是,如果您从可以扩展的列表的末尾开始计算索引,则情况并非如此。
这很容易显示:
a = [1, 2, 3]
for x in range(4, 10):
a.append(x)
print("Forward index value", a[2])
print("Reverse index value", a[-1])
如果您对某些 python
行为感到困惑,添加 print
并查看发生了什么通常很有用,请在您的代码中 运行 以下代码并尝试推断行为的原因与您想要的不同
def append_sum(lst):
print(lst,lst[2],lst[1])
lst.append(lst[2] + lst[1])
print(lst,lst[2],lst[1])
lst.append(lst[2] + lst[1])
print(lst,lst[2],lst[1])
lst.append(lst[2] + lst[1])
print(lst)
return lst
编写一个名为 append_sum 的函数,它有一个参数——一个名为 named lst 的列表。 该函数应将 lst 的最后两个元素相加并将结果附加到 lst。它应该执行此过程三次,然后 return lst。 例如,如果 lst 以 [1, 1, 2] 开始,那么最终结果应该是 [1, 1, 2, 3, 5, 8].
解决方案-1
def append_sum(lst):
lst.append(lst[2] + lst[1])
lst.append(lst[2] + lst[1])
lst.append(lst[2] + lst[1])
return lst
print(append_sum([1, 1, 2]))
ans = [1, 1, 2, 3, 3, 3]
解法-2
def append_sum(lst):
lst.append(lst[-1] + lst[-2])
lst.append(lst[-1] + lst[-2])
lst.append(lst[-1] + lst[-2])
return lst
print(append_sum([1, 1, 2]))
ans = [1, 1, 2, 3, 5, 8]
考虑:lst[2]
是一个绝对索引,而lst[-1]
是一个相对索引,基于列表的长度。如果列表超过 3 个元素(其中 lst[2]
可以工作),那么 lst[2]
仍然会给出相同的答案,无论列表有多大。但是,如果您从可以扩展的列表的末尾开始计算索引,则情况并非如此。
这很容易显示:
a = [1, 2, 3]
for x in range(4, 10):
a.append(x)
print("Forward index value", a[2])
print("Reverse index value", a[-1])
如果您对某些 python
行为感到困惑,添加 print
并查看发生了什么通常很有用,请在您的代码中 运行 以下代码并尝试推断行为的原因与您想要的不同
def append_sum(lst):
print(lst,lst[2],lst[1])
lst.append(lst[2] + lst[1])
print(lst,lst[2],lst[1])
lst.append(lst[2] + lst[1])
print(lst,lst[2],lst[1])
lst.append(lst[2] + lst[1])
print(lst)
return lst