Это довольно простой вопрос о списках и цикле.
Предполагая, что у меня есть следующий 2D-список:
[
['c', 'a', 't', 'c', 'a', 't']
['a', 'b', 'c', 'a', 't, 'l']
['c', 'a', 't', 'w', 'x', 'y']
]
И я хочу перебрать список, используя циклы for, каждый раз проверяя, есть ли слово 'cat' в списке.
Если это так, я хочу добавлять его в список каждый раз, когда он появляется.
Так что мой результат должен быть ['cat', 'cat', 'cat, 'cat']
Моя функция получает список слов и заданную матрицу (2-й список, содержащий списки букв).
Мой код:
def search_for_words(word_list, matrix):
results = []
for word in word_list:
for line in matrix:
line_string = ''.join(line)
if word in line_string:
results.append(word)
return results
И он выдаст мне просто 'cat', если cat есть в списке слов thr.
Я знаю, что, возможно, мне просто нужно еще одно утверждение if, но я могу это понять.
Заранее спасибо.
EDIT:
Я дал неправильный пример.
рассмотрим это:
matrix = [['a', 'p', 'p', 'l', 'e'],
['a', 'g', 'o', 'd', 'o'],
['n', 'n', 'e', 'r', 't'],
['g', 'a', 'T', 'A', 'C'],
['m', 'i', 'c', 's', 'r'],
['P', 'o', 'P', 'o', 'P']]
word_list = ['apple', 'god', 'dog', 'CAT', 'PoP', 'poeT]
моя функция возвращает:
['apple', 'god', 'PoP']
Когда я ожидаю, что он дважды выдаст «PoP», потому что он появляется дважды в нижнем списке.