Добавление 1 к последнему значению списка - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь добавить 1 к последнему значению в list.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 ]

1 голос
/ 26 марта 2019

Вы можете сделать это:

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

Причина, по которой ваш не работает, заключается в том, что вы, по сути, проходите через каждый элемент, и для каждого существующего элемента последний элемент увеличивается на единицу. Таким образом, если есть 3 элемента, последний элемент будет увеличен на 3.

1 голос
/ 26 марта 2019

[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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...