在Python3.x中,如何使用itertools或类似的库(需要是单行的)创建二维列表与一维列表的乘积?

问题描述 投票:0回答:1

我有两个列表想要合并:

lst1 = [['arg1', 'arg2']]  # this can have more lists, but for simplicity, leaving it as this
lst2 = ['arg3', 'arg4']

我想要两个列表的乘积,使得乘积为:

[['arg1', 'arg2', 'arg3'], ['arg1', 'arg2', 'arg4']]

我显然可以循环执行此操作,但我需要能够将其作为单行代码执行(我有原因)。

我已经能够通过执行以下操作来做到这一点:

list(
    map(
        lambda l: list(itertools.chain.from_iterable(l)),
        list(itertools.product(lst, lst2)),
    )
)

...这没关系,但我想知道是否有更好的方法来做到这一点。我还觉得应该有一种更数学的方式来表达我所描述的内容?也许

itertools
不是正确的库?

python python-3.x list python-itertools
1个回答
0
投票

使用

itertools.chain.from_iterable

import itertools
lst = [['arg1', 'arg2', 'arg3'], ['arg1', 'arg2', 'arg4']]
list(itertools.chain.from_iterable(lst))

输出:

['arg1', 'arg2', 'arg3', 'arg1', 'arg2', 'arg4']

这本质上是

doc
中的flatten食谱。

© www.soinside.com 2019 - 2024. All rights reserved.