举🌰:

五个盒子,每个盒子里面有3个球(数字表示),每次每个盒子取一个,求组合数,球编号之和。

方法一:for 循环--多层嵌套

box,box1,box2 =  [0,1,2],[0,3,4],[0,5,6]    # 0,1,2 三个盒子,数字代表球的种类
box3,box4,box5 = [0,5,6],[0,3,4],[0,1,2]    # 3,4,5 三个盒子
Box = [box,box1,box2,box3,box4,box5]
count = 0  
# methond 1
for a in Box[0]:
    for b in Box[1]:
        for c in Box[2]: 
            for d in Box[3]:
                for e in Box[4]:
                    for f in Box[5]:
                        print((a,b,c,d,e,f),sep = ',')
                        sum = a+b+c+d+e+f
                        print("sum:",sum)
                        count  += 1
print("count:",int(count))



# 运行结果(展示一部分)
..............
(2, 4, 6, 6, 3, 2)
sum: 23
count: 726
(2, 4, 6, 6, 4, 0)
sum: 22
count: 727
(2, 4, 6, 6, 4, 1)
sum: 23
count: 728
(2, 4, 6, 6, 4, 2)
sum: 24
count: 729

方法一代码太low了,脸上挂不住啊~

方法二:python内置itertools迭代器,具体介绍可以看一下这位小哥的博客:

https://blog.csdn.net/u013300049/article/details/79313979

import itertools

box,box1,box2 =  [0,1,2],[0,3,4],[0,5,6]
box3,box4,box5 = [0,5,6],[0,3,4],[0,1,2]
Box = [box,box1,box2,box3,box4,box5]
count = 0                  
# methond 2
for i in itertools.product(box,box1,box2,box3,box4 ,box5):
    print(i)
    count += 1
    print("sum:",sum(i))
    print("count:",count)


# 结果(展示部分)
..............
(2, 4, 6, 6, 3, 2)
sum: 23
count: 726
(2, 4, 6, 6, 4, 0)
sum: 22
count: 727
(2, 4, 6, 6, 4, 1)
sum: 23
count: 728
(2, 4, 6, 6, 4, 2)
sum: 24
count: 729

总结:如果这篇博客让你有多一点点了解编程知识,那就点个赞吧!

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐