Почему я вижу логические значения в списке при выполнении понимания списка? - PullRequest
0 голосов
/ 03 августа 2020

При переборе файла и поиске вхождений нескольких слов в файле. Я написал понимание списка, пытаясь сохранить совпадающие слова в списке для каждой прочитанной строки.

search_strings = ["happy", "sad", "between"]
fio = open("text.txt", encoding="utf-8")
# reading file and trying to find occurences of search_string in text file
for line in fio:
    # first attempt: not what I wanted
    found_list_1 = [word in line for word in search_string]
    # second attempt: what I wanted
    found_list_2 = [word for word in search_string if word in line]
fio.close()

Результат распечатки обоих составленных списков:

found_list_1 дает мне логические значения при распечатке

[True, False, False]

found_list_2 возвращает строку, найденную в каждой строке, прочитанной из файла.

["happy"]

Я пытаюсь понять поведение понимания списка в found_list_1, почему он возвращает логические значения вместо совпадающих слов?

Ответы [ 3 ]

0 голосов
/ 03 августа 2020
[word in line for word in search_string] # For each word in search_string, does word exist in line?.


[word for word in search_string if word in line] #List all words in search_string that exist in line.

Общая формула:

[<to be listed> for <variable> in <iterable> if <condition>]

Где <to be listed> обычно: сам <variable>, выражение, содержащее <variable> (например, in), или функция, применяемая к <variable> (например, sum, len ...).

0 голосов
/ 03 августа 2020

found_list_1 дает вам логическую информацию о появлении каждого word in search_string в line.

found_list_2 фильтрует search_strings и представляет только тот word, который встречается в line.

Рассмотрим:

found_list_1 = [True, False, False]
search_strings = ["happy", "sad", "between"]
found_list_2 = ["happy"]
0 голосов
/ 03 августа 2020

Чтобы расширить мой комментарий, ваш found_list_1 должен быть:

found_list_1 = [word for word in search_string if word in line]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...