疑わしい場合は、リスト内包表記を使用しないでください。
import this
Pythonシェルで試して、2行目を読んでください。
Explicit is better than implicit
このタイプのリスト内包表記の複合は、多くのPythonプログラマーを困惑させるので、少なくとも文字列を削除して残りのリストをフラット化することを説明するコメントを追加します。
リスト内包表記は、明確で理解しやすい場所で使用してください。特に、慣用的な場合、つまり、何かを表現するための最も効率的またはエレガントな方法であるため、一般的に使用されている場合に使用してください。たとえば、このPythonイディオムの記事には次の例があります。
result = [3*d.Count for d in data if d.Count > 4]
それは明確で、単純で、簡単です。ネストリストの内包表記は、書式設定に注意を払えばそれほど悪くはありません。中かっこは読者が式を分解するのに役立つため、コメントを追加することもできます。しかし、この問題に対して受け入れられた解決策は複雑すぎて、私の意見では混乱を招きます。それは限界を超えて、あまりにも多くの人々にとってコードを読めなくします。少なくとも1回の反復をforループに展開することをお勧めします。