如何创建二维列表与一维列表的乘积(需要是单行的)?

问题描述 投票: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 list cartesian-product
1个回答
1
投票

抱歉操之过急。 这是一种使用

itertools.product
的解决方案:

import itertools
lst1 = [['arg1', 'arg2']]
lst2 = ['arg3', 'arg4']
out = [sub_list + [element] for sub_list, element in itertools.product(lst1, lst2)]
print(out)

输出:

[['arg1', 'arg2', 'arg3'], ['arg1', 'arg2', 'arg4']]
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.