在Python中合并多个for循环
假设我们有一个叫“articles”的变量,里面存放了一些对象,每个对象都有一个叫“tags”的成员(这个成员是一个简单的列表)。
我们想要的结果是:把所有文章中的标签都放在一个列表里。
如果用多行代码来写,解决方案会是:
arr = []
for article in articles:
for tag in article.tags:
arr.append(tag)
那么,我们怎么能把这个用一行代码写出来,而不是四行呢?
这种写法是错误的:
arr = [tag for tag in article.tags for article in articles]
谢谢!
6 个回答
4
也许
arr = [tag for tag in (a.tags for a in articles)]
5
你实际上是在按照你不想要的顺序进行循环:
你想要的是:
result = [ tag for article in articles for tag in article.tags ]
把你在例子中做的事情翻译过来就是:
for tag in article.tags:
for article in articles:
#code
这其实没什么意义。
11
这是不合法的,因为在第一次循环被解析的时候,article
还不存在。
arr = [tag for article in articles for tag in article.tags]