Удалить элемент из списка, если он длиннее 4
Нужен код, чтобы удалить из списка элемент, если он длиннее 4х. Вот что у меня вышло, не работает, конечно же.
def friend(x):
for i in x:
if len(i) > 4:
return x.remove(i)
print(friend(["Ryan", "Kieran", "Mark"]))
Ответы (2 шт):
Автор решения: Сергей
→ Ссылка
У вас классическая ошибка, так как нельзя изменять список в процессе итерирования по нему (это когда for i in x:).
Лучше создавать новый, как в примере внизу.
Кроме того, вы зря выходите из функции сразу по обнаружении первого длинного элемента, а вдруг там их таких больше? (исправлено тоже)
def friend(x):
ret = []
for i in x:
if len(i) <= 4:
ret.append(i)
return ret
print(friend(["Ryan", "Kieran", "Mark"]))
Автор решения: TigerTV.ru
→ Ссылка
Можно так:
a = ["Ryan", "Kieran", "Mark"]
*res, = filter(lambda x: len(x) <= 4, a)
print(res) # ['Ryan', 'Mark']
Но это создает новый список. Если задача именно удалить элемент из имеющегося списка, то можно попробывать так:
def friend(x):
for i in range(len(x)-1, -1, -1):
if len(x[i]) > 4:
x.pop(i)
a = ["Ryan", "Kieran", "Mark"]
friend(a)
print(a) # ['Ryan', 'Mark']