У вас есть несколько проблем здесь.
abcdefwordlist
не определено (по крайней мере, не в том коде, который вы нам показали). - Вы перебираете по длине списка, а затем по списку словсамо по себе, что означает, что слишком много элементов будет добавлено в ваш результирующий массив.
- Эта функция ничего не возвращает, если только вы не хотели обновить
abcdefwordlist
извне.
У вас была правильная идея с 'def' in str(word)
, но вы должны использовать ее для обеих подстрок. Подводя итог, можно сказать, что функция, которая делает то, что вы хотите, будет выглядеть следующим образом:
def myfunc(mylist):
abcdefwordlist = [] # unless it already exists elsewhere
for word in mylist:
if 'abc' in str(word).lower() or 'def' in str(word).lower():
abcdefwordlist.append(word)
return abcdefwordlist
Это также можно отсортировать в одну строку, используя понимание списка:
def myfunc(mylist):
return [word for word in mylist if 'abc' in str(word).lower() or 'def' in str(word).lower()]
КСТАТИ Iиспользовал lower()
вместо casefold()
, потому что подстроки, которые я ищу, определенно строчные