程序1:[1,2,3,4] 求无重复数字的三位数?

'''【程序1】


题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
      掉不满足条件的排列。 
'''


''' 知识点:

for 循环:以冒号开始循环体


Sequence Types(序列类型)--list,tuple,range
list 可变列表 定义方法:
   var = []
   var = [a,b]
   var = [x for x in iterable]
   var = list()#类构造器 原型:list([iterable])
   list('abc')==list((a,b,c))==[a,b,c]
   操作:
   sort()
   common 和 mutable(可变的)序列方法。
   
Ranges:代表一个不变的数字范围。用于在循环中,对一个数字循环数次。
原型:class range(stop)
     class range(start,stop[,step])
     stop:数列起始
     start:数列结束
     step:数列步长
例子:
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0))
[]
>>> list(range(1, 0))
[]
>>> r = range(0, 20, 2)
>>> r
range(0, 20, 2)
>>> 11 in r
False
>>> 10 in r
True


操作:common方法


Tuples 元组,不变的序列 存储异构的集合数据,或不变的同构数据序列。
定义:以逗号分隔的项目,括号非必需,
    (),括号定义空元组
    a,or (a,), 以逗号结尾定义一个元素的元组
    a,b,c or (a,b,c) 以逗号分隔的项目
    tuple(iterable) 构造器
    tuple('abc') == ('a','b','c')
    tuple([1,2,3])==(1,2,3)
操作:common 操作


common操作
元素是否存在列表
x in s
x not in s 返回为True,False,
连接两个列表
s + t    
s * n or n * s 复制列表n个,并连接
取值
s[i]
s[i:j:k]
长度 len(s)
最大最小值 min(s) max(s)
出现次数 s.count(x)
取x下标 s.index(x[, i[, j]]) i坐标后,j坐标前
s.index(x) s.index(x,1) s.index(x,1,3)


mutable操作
赋值 s[i] = x  s[i:j:k] = t,t为iterable,k为步长,可忽略:k,默认为1
删除 del s[i:j:k]
追加 s.append(x)
s.clear()
s.copy()
s.insert(i, x)
s.pop([i]) 获取并删除
s.remove(x) 删除元素
s.reverse()反转元素
s.extend(t) 将列表t追加到列表
'''


''' 解法一:遍历1<=x<5的范围,求出所有组合,
        然后在最终输出时剔除相同的数字'''
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if( i != k ) and (i != j) and (j != k):
                print(i,j,k)


''' 解法二:首层循环遍历所有元素,
         下一层循环排除上一循环出现的数字,使得最终结果不会有重复数字'''
t = [1,2,3,4]
for i in t:
    h = t.copy()    
    h.remove(i)
    for j in h:
        d = h.copy()
        d.remove(j)
        for k in d:
            print(i,j,k)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值