#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=" ")
Комментариев нет:
Отправить комментарий