以下に2つのリストがあります
tags = [u'man', u'you', u'are', u'awesome']
entries = [[u'man', u'thats'],[ u'right',u'awesome']]
entries
エントリを次の場所から抽出したいtags
:
result = []
for tag in tags:
for entry in entries:
if tag in entry:
result.extend(entry)
2 つのループを 1 行のリスト内包表記として記述するにはどうすればよいでしょうか?
ベストアンサー1
これを覚える最も良い方法は、リスト内包表記内の for ループの順序は、従来のループ アプローチで出現する順序に基づいているということです。最も外側のループが最初に来て、その後に内側のループが続きます。
したがって、同等のリストの理解は次のようになります。
[entry for tag in tags for entry in entries if tag in entry]
一般的に、if-else
ステートメントは最初の for ループの前に来ます。ステートメントだけがある場合はif
、最後に来ます。たとえば、tag
エントリに がない場合に空のリストを追加したい場合は、次のようにします。
[entry if tag in entry else [] for tag in tags for entry in entries]