首页 > 解决方案 > 无论如何在列表理解中的 1 行中执行此操作?

问题描述

地图上的返回是列表的生成器。我想把它变成一个单一的列表。这可行,但我想知道我是否可以在列表理解中的一行代码中做到这一点。

with futures.ThreadPoolExecutor(max_workers=20) as executor:
    dirs = []
    for workers in executor.map(partial_subdirs, prefix_list):
        for w in workers:
            dirs.append(w)

我已经尝试过,这不会将列表附加到 1 个列表中,而是创建一个列表列表:

with futures.ThreadPoolExecutor(max_workers=20) as executor:
    dirs = [(f + f) for f in executor.map(partial_subdirs, prefix_list)]

标签: python

解决方案


您可以使用list.extend摆脱内循环:

dirs = []
for workers in executor.map(partial_subdirs, prefix_list):
    dirs.extend(workers)

或者对于单线(可能是最有效的)使用itertools.chain.from_iterable

from itertools import chain
dirs = list(chain.from_iterable(executor.map(partial_subdirs, prefix_list)))

推荐阅读