Не удаляется 3 из массива
`
array = list(map(int, input().split()))
for i in range(len(array)):
if array[i] == 3:
del array[i]
print(array)
`
Я пытаюсь удалить все числа 3 из массива К примеру 1 2 3 5 3 4 2 3 Выведет 1 2 5 4 2 Но выдаёт ошибку выхода за границу массива, почему?
Ответы (3 шт):
Автор решения: Andrei
→ Ссылка
Ваш алгоритм уменьшает размер массива в процессе цикла и Вы это не учитываете в своём алгоритме. Попробуйте сделать вот так:
array = list(map(int, input().split()))
def del_num(arr, num):
"""
Принимает массив arr и число num которое
необходимо удалить с массива.
Возвращает массив
"""
result = []
for item in arr:
if item != num:
result.append(item)
return result
print(del_num(array, 3))
Автор решения: George
→ Ссылка
Можно сделать с помощью генератора списка + работать будет быстрее
array = [1, 2, 3, 4, 3, 3, 8]
array = [item for item in array if item != 3]
print(array)
Автор решения: Namerek
→ Ссылка
from itertools import compress
from random import randint
items = [randint(0, 9) for _ in range(20)]
print(items)
print(list(compress(items, map(lambda x: x != 3, items))))
# [9, 7, 3, 6, 6, 5, 3, 6, 5, 0, 2, 1, 7, 6, 7, 3, 7, 6, 7, 4]
# [9, 7, 6, 6, 5, 6, 5, 0, 2, 1, 7, 6, 7, 7, 6, 7, 4]