LINUX.ORG.RU

Python удаление элементов из массива

 ,


0

2

Здорова юные линуксойды! У меня такая задача нужно все четные элементы массива удалить. вот код:

for i in range(len(a)):#a-- это массив 
    if a[i]%2==0:
       a.remove(a[i])
#он выводит list index out of range. Думаю это связано с удалением элемента из списка. Кто знает решение плиз помогите

умаю это связано с удалением элемента из

эмм, напомни, в чем помощь нужна ? Очевидно что это связано с удалением. Потому что он идет по длине изначального списка (не массива, кстати), по списку который становится короче.

рекомендую просто генерировать новый. Например так

a = [x for x in a if x%2!=0]

Dred ★★★★★
()

Это происходит от того, что после удаления элемента массива его длина и индексы элементов ВНЕЗАПНО меняются, а предел цикла — нет.

Rupricht ★★
()

С конца обходи.

anonymous
()
Ответ на: комментарий от Rupricht

Это не ВНЕЗАПНО, а вполне ожидаемо.

anonymous
()

Эх, Лёва, Лёва.

a = range(1, 10)
d = 0
for i in range(len(a)):
    if a[i-d] % 2 == 0:
       a.remove(a[i-d])
       d += 1
Отстреливай себе ноженьки на здоровье.

Virtuos86 ★★★★★
()

У меня такая задача нужно все четные элементы массива удалить.

Вот тебе весь код:

a = a[::2]

P.S.

#a-- это массив

Нет, a — это список. Питоний список ближе к вектору, чем к массиву.

P.P.S. А, погоди, тебе надо удалить те, у которых значение чётное? Я подумал, что через один. Тогда так:

a = [x for x in a if x%2]
Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.