早教吧 育儿知识 作业答案 考试题库 百科 知识分享

python组合问题有一个二维数列list=[['a','b'],['c','d','e'],'f',['g','h','i','j']],怎么得到list[0],list[1],list[2],list[3]的所有组合情况,如result=[[a,c,f,g],[a,d,f,g],[a,e,f,g],[a,c,f,h],[a,d,f,h]......]

题目详情
python组合问题
有一个二维数列list=[['a','b'],['c','d','e'],'f',['g','h','i','j']], 怎么得到list[0], list[1], list[2], list[3]的所有组合情况,如
result=[[a, c, f, g], [a, d, f, g], [a, e, f, g], [a, c, f, h], [a, d, f, h] ......]
这个只是一个例子,实际中,我的list有800多项,每项有2-4个元素。
哪位大虾知道怎么做啊
▼优质解答
答案和解析
a = [['a','b'],['c','d','e'],'f',['g','h','i','j']]
for i in range(len(a)):
if isinstance(a[i],str):
a[i] = [a[i]]

anum = [len(i) for i in a]
x = []
for i in range(int(''.join(map(str,anum)))):
for j in zip(list(str(i).zfill(len(a))),anum):
if int(j[0]) >= j[1]:
break
else:
x.append(list(map(int,list(str(i).zfill(len(anum))))))
temp = []
c = []
for i in x:
temp.clear()
for j,k in enumerate(i):
temp.append(a[j][k])
else:
c.append(temp)
print(c)