如何连接等分块的子列表列表
How to concatenate a list of sublists equally chunked
我有一个列表,其中包含两种不同类型项目的子列表(例如,cats
和 dogs
)。我还有一个函数 chunk(list, n_sublists)
,它将 list
拆分为大小相等的 n_sublists
。
然后,我想创建一个合并每个类型的分块列表的最终列表。一个例子:
cats_and_dogs = [ [dog1, dog2, dog3, dog4], [cat1, cat2] ]
splitted_chunks = [[[dog1, dog2],
[dog3, dog4]],
[[cat1],
[cat2]]]
final_merged_sublists = [ [dog1, dog2, cat1], [dog3, dog4, cat2] ]
我希望这个例子能说明问题。但是,如果需要,我可以提供更多解释。
提前致谢。
你可以在 zip 上做一个循环:
list(x+y for x,y in zip(chunk(dogs,2), chunk(cats,2))
输出:
[['dog1', 'dog2', 'cat1'], ['dog3', 'dog4', 'cat2']]
Update:一般情况下,使用reduce
from functools import reduce
splitted_chunks = map(lambda x: chunk(x,2), cats_and_dogs)
list(reduce(lambda x,y: x+y, z) for z in zip(*splitted_chunks) )
您可以使用 zip
和 itertools.chain
:
splitted_chunks = [[['dog1', 'dog2'],
['dog3', 'dog4']],
[['cat1'],
['cat2']]]
from itertools import chain
final_merged_sublists = [list(chain.from_iterable(x)) for x in zip(*splitted_chunks)]
输出:
[['dog1', 'dog2', 'cat1'], ['dog3', 'dog4', 'cat2']]
注意。要在任意大小的原始列表的所有子列表上应用 chunk
,请使用 map
我有一个列表,其中包含两种不同类型项目的子列表(例如,cats
和 dogs
)。我还有一个函数 chunk(list, n_sublists)
,它将 list
拆分为大小相等的 n_sublists
。
然后,我想创建一个合并每个类型的分块列表的最终列表。一个例子:
cats_and_dogs = [ [dog1, dog2, dog3, dog4], [cat1, cat2] ]
splitted_chunks = [[[dog1, dog2],
[dog3, dog4]],
[[cat1],
[cat2]]]
final_merged_sublists = [ [dog1, dog2, cat1], [dog3, dog4, cat2] ]
我希望这个例子能说明问题。但是,如果需要,我可以提供更多解释。
提前致谢。
你可以在 zip 上做一个循环:
list(x+y for x,y in zip(chunk(dogs,2), chunk(cats,2))
输出:
[['dog1', 'dog2', 'cat1'], ['dog3', 'dog4', 'cat2']]
Update:一般情况下,使用reduce
from functools import reduce
splitted_chunks = map(lambda x: chunk(x,2), cats_and_dogs)
list(reduce(lambda x,y: x+y, z) for z in zip(*splitted_chunks) )
您可以使用 zip
和 itertools.chain
:
splitted_chunks = [[['dog1', 'dog2'],
['dog3', 'dog4']],
[['cat1'],
['cat2']]]
from itertools import chain
final_merged_sublists = [list(chain.from_iterable(x)) for x in zip(*splitted_chunks)]
输出:
[['dog1', 'dog2', 'cat1'], ['dog3', 'dog4', 'cat2']]
注意。要在任意大小的原始列表的所有子列表上应用 chunk
,请使用 map