将1加到清单的最后一个值

时间:2019-03-26 00:43:43

标签: python list

我正在尝试将list中的最后一个值加1。 list[-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 item 4
idx 1 item 3
idx 1 item 3
idx 2 item 2
idx 3 item 4

有人可以解释一下为什么它适用于[1,2,3]而不适用于[4,3,2,1]吗?

2 个答案:

答案 0 :(得分:1)

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

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

请改用此方法(您也可以使用... += 1代替... = ... + 1):

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

请注意,这将修改原始列表。基本上,执行此功能将修改传递给它的列表(在您的情况下为v)。复制:

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

答案 1 :(得分:1)

您可以这样做:

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

您的元素不起作用的原因是因为您实际上要遍历每个元素,并且对于每个元素,最后一个元素都增加一个。因此,如果有3个元素,则最后一个元素将增加3。