在Python中组合多个for循环

Zyg*_*tas 4 python

比方说,我们有变量中的对象列表称为"文章",每个对象都有一个成员"标签"(这是简单列表).

预期输出:所有文章中的所有标记,加在一个列表中.

在多行中,解决方案将是:

arr = []
for article in articles:
    for tag in article.tags:
       arr.append(tag)
Run Code Online (Sandbox Code Playgroud)

现在,我们如何用单行而不是4来写这个?

此语法无效:

arr = [tag for tag in article.tags for article in articles]
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ign*_*ams 10

它是无效的,因为article在解析第一个循环时不存在.

arr = [tag for article in articles for tag in article.tags]
Run Code Online (Sandbox Code Playgroud)


Mik*_*wis 5

您实际上是按照您不想订购的顺序循环:

你想要的是:

result = [ tag for article in articles for tag in article.tags ]
Run Code Online (Sandbox Code Playgroud)

翻译您在示例中所做的事情将是:

for tag in article.tags:
    for article in articles:
       #code
Run Code Online (Sandbox Code Playgroud)

这没有多大意义.