3 回答

TA贡献1803条经验 获得超3个赞
您可以使用itertools.product生成 的所有可能的 3 组合l2,然后将每个组合与 连接起来l1。
from itertools import product
combs = product(map(str, l2), repeat=3)
['-'.join([x + y for x, y in zip(l1, c)]) for c in combs]
# ['a1-b1-c1', 'a1-b1-c2', 'a1-b2-c1', 'a1-b2-c2', 'a2-b1-c1', 'a2-b1-c2', 'a2-b2-c1', 'a2-b2-c2']

TA贡献1852条经验 获得超7个赞
此解决方案从l1以下位置创建模板:例如。'a{}-b{}-c{}'
from itertools import product
l1 = ['a', 'b', 'c']
l2 = [1, 2]
template = "{}-".join(l1) + "{}"
[template.format(*c) for c in product(l2, repeat=len(l1))]
['a1-b1-c1'、'a1-b1-c2'、'a1-b2-c1'、'a1-b2-c2'、'a2-b1-c1'、'a2-b1-c2'、' a2-b2-c1', 'a2-b2-c2']

TA贡献2016条经验 获得超9个赞
您可以使用itertools.product
并列出推导式来获得您所追求的结果:
from itertools import product result = ["-".join(y+str(z) for y, z in zip(l1, x)) for x in product(*[l2] * 3)]
我想指出该方法不会产生任何额外的中间组合。
输出:
['a1-b1-c1', 'a1-b1-c2', 'a1-b2-c1', 'a1-b2-c2', 'a2-b1-c1', 'a2-b1-c2', 'a2-b2-c1', 'a2-b2-c2']
添加回答
举报