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']
添加回答
舉報