Добавление элементов в список и удаление из другого - PullRequest
0 голосов
/ 29 октября 2018
lst=[201, 303, 210, 407, 213, 313]
lst2=[302,304,404]
value=4
for j in range(0,len(lst),-1):
        if len(lst)>=value:
            lst2.append(lst[j])

Я пытаюсь добавить последние 4 элемента в "lst" к "lst2", его 4, потому что это то, что я назначил value.Однако, ничего в списках не изменилось?

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Имея доступ к элементу в списке, вы можете сделать это, нарезав

    lst=[201, 303, 210, 407, 213, 313]
lst2=[302,304,404]
lst2.append(lst[2:])
print(lst2)
0 голосов
/ 29 октября 2018

Попробуйте:

lst=[201, 303, 210, 407, 213, 313]
lst2=[302,304,404]
value=4
for i in lst[-4:]:
    lst2.append(i)
    lst.remove(i)

Вывод:

[201, 303]
[302, 304, 404, 210, 407, 213, 313]
0 голосов
/ 29 октября 2018

Синтаксис для range равен range(start, stop, step). Таким образом, итерация по range(0, len(lst), -1) будет повторяться по ничего , так как вы не можете перейти вниз с 0 до положительного числа.

Это сработает, отметив, что мы должны вычесть 1 для учета 0-индексации:

for j in range(len(lst)-1, len(lst)-1-value, -1):
    lst2.append(lst[j])

print(lst2)

[302, 304, 404, 313, 213, 407, 210]

Ваш range объект здесь немного запутан. Отмечая, что отрицательные диапазоны и индексирование отрицательных списков работают нормально, вы можете использовать вместо range(-1, -value-1, -1).

С Python вам вообще не нужно перебирать диапазоны. Вместо этого вы можете использовать нарезку списка и reversed для итерации самих значений, а не индексов:

for j in reversed(lst[-value:]):
    lst2.append(j)

Конечно, ручной цикл здесь не требуется, его можно расширить с помощью +=:

lst2 += reversed(lst[-value:])

Если вам также необходимо удалить эти элементы из lst, вы можете сделать это с помощью нарезки:

lst = lst[:-value]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...