3 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用itertools.product生成 的所有可能的 3 組合l2,然后將每個(gè)組合與 連接起來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貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
此解決方案從l1以下位置創(chuàng)建模板:例如。'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貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用itertools.product
并列出推導(dǎo)式來獲得您所追求的結(jié)果:
from itertools import product result = ["-".join(y+str(z) for y, z in zip(l1, x)) for x in product(*[l2] * 3)]
我想指出該方法不會(huì)產(chǎn)生任何額外的中間組合。
輸出:
['a1-b1-c1', 'a1-b1-c2', 'a1-b2-c1', 'a1-b2-c2', 'a2-b1-c1', 'a2-b1-c2', 'a2-b2-c1', 'a2-b2-c2']
添加回答
舉報(bào)