Как удалить элементы из списка?
Вот код, который у меня есть:
def remove(lst: list, pos: int):
pass
def test_remove():
lst = ['Turkey',
'Stuffing',
'Cranberry sauce',
'Green bean casserole',
'Sweet potato crunch',
'Pumpkin pie']
remove(lst, 2)
assert lst == ['Turkey',
'Stuffing',
'Green bean casserole',
'Sweet potato crunch',
'Pumpkin pie',
None]
lst = [5, 10, 15]
remove(lst, 0)
assert lst == [10, 15, None]
lst = [5]
remove(lst, 0)
assert lst == [None]
if __name__ == "__main__":
test_remove()
Запишите код в remove(), чтобы удалить элемент в позиции гнезда, сдвинув элементы за ним, чтобы закрыть пробел, и оставив значение None в последнем слоте.
Любые идеи о том, где я должен начать?
3 ответа
Запишите код в remove(), чтобы удалить элемент в позиции гнезда, сдвинув элементы за ним, чтобы закрыть пробел, и оставив значение None в последнем слоте.
Вы можете использовать pop
метод list
удалить элемент и затем добавить None
к списку.
def remove(lst: list, pos: int):
lst.pop(pos)
lst.append(None)
Учитывая список lst
, pop(i)
Метод удаляет элемент в i
индекс из lst
,
def remove(lst: list, pos: int):
lst.pop(pos)
Также я заметил в вашем тесте, вы ожидаете, что при удалении элемента, что None
добавляется в конец списка. Это не вариант. None
не должен быть элементом в списке строк, и если вы удалите элемент из списка, этот элемент исчезнет, но остальные элементы останутся прежними, и больше ничего не будет добавлено.
Если вы хотите сделать это, просто добавьте lst.append(None)
до последней строчки remove()
функция.
Просто используя основные понятия, мы можем использовать цикл for:
def remove(lst: list, pos: int):
for i in range(pos, len(lst)-1):
lst[i] = lst[i+1]
lst[-1] = None
return lst
и тест:
remove([1,2,3,4,5,6], 2)
#[1, 2, 4, 5, 6, None]
Обратите внимание, что более просто использовать встроенные методы как @galfisher
а также @R Sahu
описать.