实例001:数字组合

题目 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

不想用三个循环,用了2个循环+去除某个元素的形式,感觉好像更复杂了……

li=[1,2,3,4]
li2=[1,2,3,4]#避免循环1中删改li中元素的影响
nums=[]

#循环1
for i in range(4):
    li3=[]
    li.pop(i)
    li3.extend(li)   #避免循环2中删改li中元素的影响
    
    #循环2   
    for j in li:           
            li.remove(j)                        
            num1=str(j)+str(li[1])+str(li[0])
            num2=str(j)+str(li[0])+str(li[1])
            nums.extend([int(num1),int(num2)])
            #将li复位成未删改前的格式            
            del li[:]
            li.extend(li3)
    
    #将li复位成未删改前的格式                   
    del li[:]
    li.extend(li2)
print(nums,len(nums))

共 4x3x2=24 种结果

结果如下

[243, 234, 342, 324, 432, 423, 143, 134, 341, 314, 431, 413, 142, 124, 241, 214, 421, 412, 132, 123, 231, 213, 321, 312] 24
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值