我有两个列表如下
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)
如何将两个循环编写为单行列表理解?
最佳答案
记住这一点的最好方法是列表推导式中 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]
关于python - 如何在列表理解python中构建两个for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18551458/