题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
掉不满足条件的排列。
2.我的笨方法代码
1 for i in range(1,5): 2 for j in range(1,5): 3 for k in range(1,5): 4 if i!=j and i!=k and j!=k: 5 print(i*100+j*10+k)
3.网络高手的方法【代码来自网络,知识产权归原作者所有】
1 for i in range(1, 5): 2 for j in range(1, 5): 3 if (j==i) : 4 continue; 5 for k in range(1, 5): 6 if (k==i or k==j): 7 continue; 8 print(i,j,k);
考虑了若相等就跳出
1 list = [1,2,3,4] 2 for i in list: 3 list1 = list.copy() 4 list1.remove(i) 5 for j in list1: 6 list2 = list1.copy() 7 list2.remove(j) 8 for k in list2: 9 print(i, j, k)
使用数组的思想解决
1 a=[(x,y,z) for x in range(1,5) for y in range(1,5) for z in range(1,5) if(x!=y)and(x!=z)and(y!=z)] 2 print(a)
使用列表推导式