python - 如何在列表理解python中构建两个for循环

标签 python list for-loop list-comprehension

我有两个列表如下

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/

相关文章:

python - 将 Python 文件打包成单个 .py 脚本

python - 在 Pandas 数据框中加速 iloc 解决方案

c# - 有没有办法遍历我的sql结果并将某些名称/值对存储在C#中的其他位置?

python - 无法找出给定 for 循环的原因(Python 3.11)

java - 避免在 for 循环中创建多个类对象 - 性能

python - VS Code 与 Pylint 存在问题

c++ - 使用 C++ 在结构中初始化列表容器对象?

C++ 列表插入

ios - 如何在异步调用中退出循环?

python - 将数据帧旋转到一级/重命名 df.pivot() 输出列