Удаление значения, если есть вхождение в list

Есть

listt = ['testzxc','someqwe','thisert']
key = 'test'

Надо удалить значение в list, если есть вхождение key.
Можно сделать, например, через filter или lambda?

вот решение обычное:

listt = ['testzxc', 'someqwe', 'thisert']
new_listt = []
key = 'test'
for item in listt:
   if key in item:
      next
   new_listt.append(item)
print(new_listt)

PS Хочу сделать это через while или for, но есть ли магия python, какое-то изящное решение?


Ответы (2 шт):

Автор решения: TigerTV.ru

Через filter:

listt = ['testzxc','someqwe','thisert']
key = 'test'
*listt, = filter(lambda x: x.find(key) == -1, listt)
print(listt)
→ Ссылка
Автор решения: Jack_oS

Можно и с filter, и с lambda:

key = 'test'
my_list = ['testzxc', 'someqwe', 'thisert']

new_list = list(filter(lambda i: key not in i , my_list))
>>> new_list
['someqwe', 'thisert']

но старый добрый list comprehension все же понятнее, как по-мне:

new_list = [i for i in my_list if key not in i]
→ Ссылка