好久没敲代码了,今天又看到了老潘的微博python推送,那就继续从老潘的微博开始,作为ghpython的基础练习。
今天的题目是这样的,有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
这其实是高中数学里最基础的排列组合题,一个A43=4x3x2x1=24就搞定了,但是既然是ghpython咱们就得用python的玩法解。
python里我学习到了两种思路,思路之一是利用三层for循环嵌套来分别遍历1-4数字列表,三层循环遍历的值均不相同所获得数字即为满足要求的数,再利用字符串相加得到数字字符串,至于满足要求的数字的数量,则可以利用一个计数器进行统计,计数器初始值为0,每获得一个满足要求的值,计数器就+1,这样就得到最终的数量统计24了。
思路之二就是利用itertools模块里的permutation函数,permutations函数就是输出列表的全排列组合,长度由第2个参数控制,输出结果为迭代器,最后利用列表推导式将迭代器作为列表输出。
欢迎关注「颜犀设」知乎专栏和知识星球。