有关python 排列组合的问题。

有十组数,每组数里面又有十个值
我想从每一组取一个,组成一个新的十位数
然后循环取,一直到取完,按理说是有10的10次方个这样的数。
请问如何使用代码实现呢?

参考代码如下:
这个三重循环是通用的, 你列表有多大都可以

li = [
    ["A","B","C"],
    ["X","Y","Z"],
    ["1","2","3"]
]
res = [[]]
for a in li:
    tli = []
    for c in res:
        for b in a:
            tli.append(c+[b])
    res = tli

for x in res:
    print(x)

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

按你的意思for循环多层遍历就可以,我写了个2组每组2个的例子

a=[1,2]
b=[3,4]
for i in range(2):
    t1=a[i]
    for j in range(2):
        t2=b[j]
        print(str(t1)+""+str(t2))

img

import itertools
list1 = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]*4
# print(list1)

result = list(map(lambda x:int(''.join(map(str,x))),itertools.product(*list1)))
print(result[:100])

img


求笛卡尔积后拼接,因为10^10太大了,我这里用了10^4做示例

1.最简单的办法,10重for循环取值呗
代码看起来繁琐,但是不烧脑
2.要么你就用二维list来存变量,然后递归去取
3.先丢数据库里然后取笛卡尔积

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632