如何使用.extend list方法使用列表理解?

时间:2016-07-15 15:39:02

标签: python list-comprehension

例如,此代码段:

out = []
for foo in foo_list:
    out.extend(get_bar_list(foo)) # get_bar_list return list with some data
return out

如何使用列表理解缩短此代码?

2 个答案:

答案 0 :(得分:7)

您可以使用生成器表达式并使用itertools.chain 消费

from itertools import chain

out = list(chain.from_iterable(get_bar_list(foo) for foo in foo_list))

答案 1 :(得分:5)

您可以使用嵌套列表理解:

out = [foo for sub_item in foo_list for foo in get_bar_list(sub_item)]

FWIW,我总是很难记住嵌套列表推导的确切顺序,因此我通常更喜欢使用itertools.chain(如摩西的答案中所述)。但是,如果您真的喜欢嵌套列表推导,那么顺序与您在普通循环中遇到它们的顺序相同(最里面的循环变量可用于列表推导中的第一个表达式):

for sub_item in foo_list:
    for foo in get_bar_list(sub_item):
        out.append(foo)