for a in range(19000101, 20171206): //设定检索范围
date = str(a) //int类型不能用split拆,所以先转str
l=[] //建一个空的list待用
for x in date: //把str类型的8位数全部拆开放进空列表l中,放进去的时候把元素转成int,这时候l中相当于有8个int类型的数
l.append(int(x))
l2 = set(l) //把l转成集合类型,因为集合中不能有重复元素,所以会自动消去所有重复的数
l3 = list(l2) //将集合转回list后比较set前后两个list长度是否一致,以此判定list里是否有数字被消去,这样就能找到8位都不重复的8位数了。
if (len(l)==len(l3))&(l[4]<2)&(l[6]<3): //因为月份最大只能是12,日期最大只能是31,加上相应限制
print(l) //输出结果