from functools import reduce
def combineN(*li):
res = []
# 相当于最内层循环执行的次数.
total_times = reduce(lambda x, y: x*y, [len(item) for item in li])
n = 0
while n < total_times:
tmp = n
tem_res = []
for i in range(len(li)):
# 余数就是参与计算的元素的下标,商用于计算下一个列表参与元素的下标.
tmp, cur = divmod(tmp, len(li[i]))
tem_res.append(li[i][cur])
res.append(tem_res)
n += 1
return res
res = combineN(["a1", "a2","a2"], ["b1", "b2","b2"], ["b1", "c2"],["d1", "d2","d3"])
以上代码运行时正确的,但是对于 res = combineN(["a1", "a2","a2"], ["b1", "b2","b2"], ["b1", "c2"],["d1", "d2","d3"])
想用一个参数代替,我想的方法是
先 LL=["a1", "a2","a2"], ["b1", "b2","b2"], ["b1", "c2"],["d1", "d2","d3"]
再用 res= combineN(LL) ,想得到与res = combineN(["a1", "a2","a2"], ["b1", "b2","b2"], ["b1", "c2"],["d1", "d2","d3"])相同的结果
但是报错,因为LL是将["a1", "a2","a2"], ["b1", "b2","b2"], ["b1", "c2"],["d1", "d2","d3"]放到了一个列表里面,
实际的LL是[["a1", "a2","a2"], ["b1", "b2","b2"], ["b1", "c2"],["d1", "d2","d3"]]。
有人能帮我实现res = combineN(用一个参数LL表示) ,技能运行出结果吗
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。