1 #原始写法 2 l=[] 3 for i in range(1,11): 4 l.append(str(i).zfill(2)) 5 print(l)
#结果:['01', '02', '03', '04', '05', '06', '07', '08', '09', '10']
列表生成式,只能用在列表中
先写循环,再把循环里的i拿出来,可以做一些简单的操作(补零、转换为字符串等)
1 # 列表生成式 2 l2=[str(i).zfill(2) for i in range(1,11)] 3 print(l2) 4 5 #结果:['01', '02', '03', '04', '05', '06', '07', '08', '09', '10']
小练习:(创建一个文件)
1 import os 2 # 创建文件 3 res=[open('%s.txt'%i,'w')for i in range(10)] 4 # 创建文件夹 5 # res=[os.mkdir(str(i))for i in range(10)]
小练习:(列表生成式,加判断)
1 # 加判断写法(列表生成式只可以加判断) 2 res=[os.mkdir(str(i))for i in range(10) if i%2!=0] #遇到偶数创建 3 res=[os.mkdir(str(i))for i in range(10) if i>0] #if可以加可以不加
小练习:(生成100以内的奇数)
1 l = [i for i in range(1,51,2)]#外面是[]就是一个list 2 print(l)
#结果:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]
生成器
1 #列表生成式 2 l = [i for i in range(1,11,2)]#外面是[]就是一个list 3 print(l) 4 #结果:[1, 3, 5, 7, 9] 5 #以空间换时间,内存占用大,但是不用再计算省cpu 6 #list它是把所有的元素都放在内存里面的,这里就会申请5块内存空间
7 #生成器() 8 l=(i for i in range(1,11,2))#外面是()的话,就是生成器 9 print(l) 10 # 结果:<generator object <genexpr> at 0x000000000266A4C0> 11 12 for i in l: 13 print(i) 14 # 结果: 15 # 1 16 # 3 17 # 5 18 # 7 19 # 9 20 #generator生成器比list要节省内存,它是每次循环的时候,会根据规则计算一个元素,放到内存里面 21 #generator性能比list好一些,只申请一块内存空间,每次调用再去根据规则算
三元表达式
1 #初级写法 2 sex=0 3 if sex==0: 4 sex='女' 5 else: 6 sex='男' 7 print(sex) 8 9 # 三元表达式 10 # 高级写法 11 sex=0 12 sex= '女' if sex==0 else '男' #(满足条件取前面的 值,条件不满足取后面的 值) 13 print(sex)
小练习二
1 a = 5 2 b = 6 3 # if a > b: 4 # c = a 5 # else: 6 # c = b 7 c = a if a > b else b #如果a大于b的话,a = c,否则 c =b 8 print(c)