1

2 つのリストがあります。1 つは文を含み、もう 1 つは単語を含みます。

単語リストの単語を含まないすべての文が必要です。

リスト内包表記でこれを達成しようとしています。例:

cleared_sentences = [sentence for sentence in sentences if banned_word for word in words not in sentence]

ただし、割り当て前に変数が使用されているというエラーが表示されるため、機能していないようです。

ネストされた内包表記を探してみましたが、これは要求されたに違いないと確信していますが、何も見つかりません。

どうすればこれを達成できますか?

4

1 に答える 1

3

注文が混同されました:

[sentence for sentence in sentences for word in words if banned_word not in sentence]

禁止された単語が文に表示さsentenceれるたびにリストされるため、それが機能するわけではありません. 完全に展開されたネストされたループ バージョンを見てみましょう。

for sentence in sentences:
    for word in words:
        if banned_word not in sentence:
            result.append(sentence)

代わりに、any()関数を使用して禁止単語をテストします。

[sentence for sentence in sentences if not any(banned_word in sentence for banned_word in words)]

any()True値が見つかるまでジェネレーター式をループします。禁止された単語が文中に見つかった瞬間に動作を停止します。これは少なくともより効率的です。

于 2013-07-27T09:22:06.453 に答える