私の質問の概要は、リスト内包表記で文字列から複数の不要な文字列を除去する処理の書き方です。

例えば、

"a皆a様aよbろbしbくcおc願cいcしNULLまNULLす。"

から不要な["a","b","c","NULL"]を除去して

"皆様よろしくお願いします。"

を得るために

words = "a皆a様aよbろbしbくcおc願cいしNULLまNULLす。"
alist = ["a", "b", "c","NULL"]
for delstr in alist:
    words = words.replace(delstr, "")

という処理をしています。しかし、wordsは多数存在し、alistも巨大なため、リスト内包表記で高速化が出来ないかと考え、以下のようなコードを書きました。

[words.replace(delstr, "") for delstr in alist]

しかし、これではwordsからalistのそれぞれの要素を除去したリストが得られてしまうため、目的を果たせません。

一つの方法は上記のwordsをリスト内包表記にしてalistの要素をループ毎にwordsのリストから除去する方法ですが、もし内包表記で単一のオブジェクトに複数の処理ことができるならばwordsのリストとalistを一括して内包表記にできるため、より望ましいと考えています。wordsからalistの要素すべてをリスト内包表記で除去する方法があればご教示頂ければ幸いです。