Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

Как удалить элемент массива в питоне?

#python


Почему не работает этот код?
for a in massiv:
    for b in massiv:
        if len(a)> len(b):
            del b
        elif len(a)


Ответы

Ответ 1



Код не работает, т.к. инструкция del не удаляет элемент, а уменьшает число ссылок на него на 1, del a означает, что нужно уменьшить число ссылок на элемент списка, на который ссылается a, но т.к. в списке остается ссылка на этот элемент, то он никуда не удаляется.

Ответ 2



Странная логика у вашего скрипта =). Но всеже. Во время итерации по массивам в питоне не допускается удаление элементов. Для этого либо сделайте копию списка - massiv[:], либо итерируйте по старинке - по индексам. В случае индексов вы получаете доступ к элементам исходного массива. massiv = ['12', '123', '1234'] for i in range(len(massiv) - 1): for j in range(len(massiv) - 1): if len(massiv[i]) > len(massiv[j]): del massiv[j] elif len(massiv[i]) < len(massiv[j]): del massiv[i] print massiv # => ['1234']

Ответ 3



maxlen= max([len(i) for i in massiv]) massiv=filter(lambda x: len(x)=maxlen, massiv)

Ответ 4



for a in massiv: for b in massiv: if len(a)> len(b): massiv.remove(b) elif len(a)

Ответ 5



Чтобы удалить элемент из списка lst, если известен его индекс i: del lst[i] Чтобы удалить все элементы, кроме элемента с наибольшей длиной: lst[:] = [max(lst, key=len)] Идиоматический способ удалить элементы из списка, удовлетворяющие заданному условию, собрать элементы, которые следует оставить и заменить ими все элементы в списке: lst[:] = [item for item in lst if keep(item)]

Ответ 6



Во-первых, это кортеж или статический массив? Во-вторых, a и b - это не элементы, это просто моментальное представление. Должно так быть: for a in massiv: for b in massiv: if len(a)> len(b): del massiv[b] elif len(a)

Ответ 7



Удаляем элемент: a = [1,3,5,7,4] n = int(input()) a.pop(n) print(*a, sep=" ")

Комментариев нет:

Отправить комментарий