Удаление значения, если есть вхождение в 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]