举🌰:
五个盒子,每个盒子里面有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
总结:如果这篇博客让你有多一点点了解编程知识,那就点个赞吧!