Понимание списка нарушает внутренний цикл - PullRequest
0 голосов
/ 27 апреля 2018
keyword = ['air','water' ,'fire','earth']
actual = ['air','water earth']
new = []

for a in actual:
    for k in keyword:
        if k in a:
           new.append(a)
           break

print("\n".join(new))
#air
#water earth

Если без break, будет напечатано

#air
#water earth
#water earth

Как я могу преобразовать это в понимание списка и с ключевым словом break?

Мой код

[new.append(a) for a in actual for k in keyword if k in a]

Пожалуйста, помогите мне в этом.

1 Ответ

0 голосов
/ 27 апреля 2018

Вы можете изменить свое состояние, например ::1001

In []:
new = [a for a in actual if any(k in a for k in keyword)]
print(new)

Out[]:
['air', 'water earth']

Это в полной форме будет:

new = []
for a in actual:
    if any(k in a for k in keywords):
        new.append(a)

Что функционально эквивалентно внутреннему циклу с разрывом, потому что any() приведет к короткому замыканию.

...