有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?具体有哪些数字
钟祥网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联公司从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。
方法一:for循环+集合去重复项
方法二:内置函数itertools
排列组合迭代器:
itertools.product p,q…[repeat=l]笛卡尔积,相当于嵌套的for
itertools.permutation p[,r]长度为r元组,所有可能得排列,无重复元素
itertools.combination p,r 长度r元组,有序,无重复元素
itertools.combinaton_with_replacement p,r 长度人员组,有序,元素可重复
举例
模块其他函数:
遍历一个序列中元素的所有可能的排列或组合。
itertools 模块提供了三个函数来解决这类问题。 其中一个是 itertools.permutations() , 它接受一个序列并产生一个元组序列,每个元组由序列中所有元素的一个可能排列组成,即通过打乱序列中元素排列顺序生成一个元组,比如:
如果想得到指定长度的所有排列,你可以传递一个可选的长度参数。比如:
使用 itertools.combinations() 可得到输入序列中元素的所有的组合。比如:
对于 combinations() 来讲,元素的顺序已经不重要了,即组合 ('a', 'b') 与 ('b', 'a') 其实是一样的,最终只会输出其中一个。
在计算组合的时候,一旦元素被选取就会从候选中剔除掉(比如如果元素’a’已经被选取了,那么接下来就不会再考虑它了)。 而函数 itertools.combinations_with_replacement() 允许同一个元素被选择多次,比如:
尽管手动可以实现排列组合算法,但是这样做比较麻烦,当遇到有些复杂的迭代问题时,可以先去看看itertools模块是否能实现,很有可能会在里面找到解决方案!
python中set()函数的用法如下:
工具/原料:台式电脑、Win10、Python3.6.5。
1、首先按下“Win+R”组合键,打开运行窗口,如下图所示。
2、在打开文本框输入“cmd”,点击确定,如下图所示。
3、在打开的cmd窗口中,输入:“python”,点击Enter键,如下图所示。
4、在Python环境中,输入:“x = set(('hi', 'hello', 'world'))”,点击Enter键,如下图所示。
5、在Python环境中,输入:“print(x)”,如下图所示。
6、点击Enter键,即可使用Python内置的set()函数创建一个集合对象,并打印出来,如下图所示。
itertools.product。
r语言combn函数是一种排列组合的函数,python中排列组合的函数是itertools.product(sequence,repeat)。
import math
m = int(input("请输入第一个数字:"))
n = int(input("请输入第二个数字:"))
if m 0 or n 0 or m - n 0:
print("负数是没有阶乘,请重新输入!")
else:
result = math.factorial(m) / math.factorial(n) / math.factorial(m - n)
print("按照公式C(m, n) = m!/n! /(m - n)!,C({0},{1})的答案为 {2}".format(m, n, result))
python有两个内置的函数用于实现排序,一个是list.sort()函数,一个是sorted()函数。
区别1:list.sort()函数只能处理list类型数据的排序;sorted()则可以处理多种类型数据的排序。
区别2:list.sort()会修改原来的list为排序后的结果;sorted()不会修改原来的数据,只是返回一个排序后的对象。
下面来动手写点代码进行测试:
list进行简单的排序
1 a=['a','f','c','x','e']2 a.sort()3 a4 [a','c','e','f','x']
sorted()进行简单排序
1 a=['a','f','c','x','e']2 a_new=sorted(a)3 a_new4 ['a', 'c', 'e', 'f', 'x']
list.sort()和sorted都有默认的参数reverse,该参数的默认值为“False”,即默认升序排列。如果要进行降序排列:
1 a=['a','f','c','x','e']2 a_new=sorted(a,reverse=True)3 a_new4 ['x', 'f', 'e', 'c', 'a']
对元组进行排列,不能使用list.sort()函数:
1 a=('a','f','c','x','e')2 a_new=a.sort()3
4 ttributeError: 'tuple' object has no attribute 'sort'
对字典的排序可以按照字典的key或者value进行排序:
1 dic={"aa":11,"ff":5,"ee":22}2 printsorted(dic.keys())3 ['aa', 'ee', 'ff']
从python2.4开始list.sort()和sorted()都引入了key参数来指定一个函数进行排序,有了key参数以后我们就可以对更加复杂的数据进行排序 。
假如需要排序的数据为一个list,但list的每一个元素都是一个字典,排序的方法如下:
dic=[{"name":"sunny","age":20},
{"name":"bell","age":5},
{"name":"jim","age":1},
{"name":"jan","age":10}]print sorted(dic,key=lambda arg:arg.get('age'),reverse=False) #按照每个字典的age的值进行排序,字典的方法dict.get(key)将返回指定键的值。
#输出结果为:[{'age': 1, 'name': 'jim'}, {'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 20, 'name': 'sunny'}]
print sorted(dic,key=lambda arg:arg.get('name'),reverse=False) #按照每个字典的name的值进行排序
#输出结果为:[{'age': 5, 'name': 'bell'}, {'age': 10, 'name': 'jan'}, {'age': 1, 'name': 'jim'}, {'age': 20, 'name': 'sunny'}]
假如需要排序的数据为一个二维的list,即list的每一个元素也是一个list,方法与上面的例子类似:
a=[['100','8','30'],['200','5','50'],['300','1','20']]print sorted(a,key=lambda arg:arg[1]) #按照每个list的第1个元素进行排序
[['300', '1', '20'], ['200', '5', '50'], ['100', '8', '30']]
前面的2个例子中,key参数的值都是函数。在sorted函数中,key参数后面的函数的参数的数量只能是一个。lambda arg:arg.get('age')是一个lambda匿名函数,它是一个没有函数名的单语句函数。冒号左边是参数,冒号右边的返回值,返回值将被用于排序。