Python 将1添加到列表的最后一个值

Python 将1添加到列表的最后一个值,python,list,Python,List,我正在尝试将1添加到列表中的最后一个值中列表[-1]应该给我最后一个值。代码如下: def plusOne( l): for idx, item in enumerate(l): l[-1]=l[-1]+1 return l print(plusOne(v)) 问题:在运行代码时,当我期望v=[4,3,2,5]时,我得到了答案v=[4,3,2,2]。当我使用[1,2,3]进行测试时,这一点就起作用了。当我在l[-1]行上放置断点时,我看到: idx 0第4项 id

我正在尝试将1添加到
列表中的最后一个值中<代码>列表[-1]
应该给我最后一个值。代码如下:

def plusOne( l):
    for idx, item in enumerate(l):
      l[-1]=l[-1]+1
    return l

print(plusOne(v))
问题:在运行代码时,当我期望
v=[4,3,2,5]
时,我得到了答案
v=[4,3,2,2]
。当我使用
[1,2,3]
进行测试时,这一点就起作用了。当我在
l[-1]
行上放置断点时,我看到:

idx 0第4项
idx 1第3项
idx 1第3项
idx 2项目2
idx 3项目4

有人能解释一下为什么它适用于
[1,2,3]
而不是
[4,3,2,1]

[1,2,3]
对我不起作用;它返回
[1,2,6]

这里不需要任何循环。它之所以多次添加1,是因为您将递增最后一个元素的代码放入循环中。因此,当列表包含4个元素时,最后一个元素将递增4倍

请尝试此操作(您也可以使用
..+=1
而不是
..=..+1
):

请注意,这将修改原始列表。基本上,此函数的执行将修改传递给它的列表(在您的示例中为
v
)。要复制:

def plusOne(l):
    l = l[:]
    l[-1] += 1
    return l
您可以这样做:

def plusOne(l):
    l[-1] += 1
    return l

之所以您的元素不起作用,是因为您基本上要遍历每个元素,并且对于存在的每个元素,最后一个元素将递增1。因此,如果有3个元素,那么最后一个元素将增加3。

如果您只想在列表中添加一对一项,则不需要循环。循环可以执行多次操作。这并不重要,因为您不需要使用循环来执行此操作,但在您所问的代码中,您不需要使用
enumerate()
,因为您从未引用
-所以可以对范围(len(l))中的idx使用
而不是完成同样的事情。精彩的解释。谢谢
def plusOne(l):
    l[-1] += 1
    return l