#题目 有四个数字:1、2、 3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
#1.暴力法 根据题意写
arr=[] #用于存放三位数
count=0 #用于计数
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
num=i*100+j*10+k
if i!=j and i!=k and j!=k and num not in arr: #如果三个数字不相同 并且无重复
arr.append(num)
count+=1
print(arr)
print(count)
2.引用itertools模块i
mport itertools
lst=list(itertools.permutations([1,2,3,4],3)) #表示 用1,2,3,4 四个数 选3个
print(lst)
此时,这里的lst # A_4^3 = (4)!/(4-3)! = (4*3*2*1)/1 = 24 共有24种情况
这是在控制台输出的[(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4), (1, 4, 2), (1, 4, 3), (2, 1, 3), (2, 1, 4), (2, 3, 1), (2, 3, 4), (2, 4, 1), (2, 4, 3), (3, 1, 2), (3, 1, 4), (3, 2, 1), (3, 2, 4), (3, 4, 1), (3, 4, 2), (4, 1, 2), (4, 1, 3), (4, 2, 1), (4, 2, 3), (4, 3, 1), (4, 3, 2)]
接着 再转换为3位数就行了
arr=[100*t[0]+10*t[1]+t[2] for t in lst] #列表生成式
print(arr,len(arr))
这里用到了一个列表生成式