【问题标题】:How to use list comprehension with .extend list method? [duplicate]如何将列表理解与 .extend 列表方法一起使用? [复制]
【发布时间】:2016-11-18 21:34:57
【问题描述】:

比如这个sn-p:

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

如何使用列表推导缩短此代码?

【问题讨论】:

标签: python list-comprehension


【解决方案1】:

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

from itertools import chain

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

【讨论】:

    【解决方案2】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2015-12-09
      相关资源
      最近更新 更多