3 回答

TA贡献1811条经验 获得超5个赞
如果您稍稍更改数据结构,那么对于itertools模块而言,这是一个微不足道的问题:
>>> lst = [1]
>>> combine = [["a", "b", "c"], ["A", "B", "C"]]
>>> import itertools
>>> [lst+list(item) for item in itertools.product(*combine)]
[[1, 'a', 'A'], [1, 'a', 'B'], [1, 'a', 'C'], [1, 'b', 'A'], [1, 'b', 'B'],
[1, 'b', 'C'], [1, 'c', 'A'], [1, 'c', 'B'], [1, 'c', 'C']]

TA贡献1982条经验 获得超2个赞
>>> from itertools import product
>>> lst = [1]
>>> combine = [["a", "b", "c"], ["A", "B", "C"]]
>>> list(product(*[lst]+combine))
[(1, 'a', 'A'), (1, 'a', 'B'), (1, 'a', 'C'), (1, 'b', 'A'), (1, 'b', 'B'), (1, 'b', 'C'), (1, 'c', 'A'), (1, 'c', 'B'), (1, 'c', 'C')]
你也可以使用
list(product(lst, replace_lst1, replace_lst2))

TA贡献1860条经验 获得超9个赞
我将使用itertools.product,外加一个测试来替换?。按值:
lst = [1, '?2','?3']
replace_lst1 = ['a','b','c']
replace_lst2 = ['A', 'B', 'C']
res = []
#put as many replace_lst as you need here
for values in itertools.product(replace_lst1, replace_lst2):
val_iter = iter(values)
res.append([x if str(x).find('?') == -1 else next(val_iter) for x in lst])
使用val_iter可以将?*放置在任何位置(但不能以任何顺序放置)。
添加回答
举报