python—列表生成式

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)

 

posted @ 2019-04-28 11:05  localhost;  阅读(330)  评论(0编辑  收藏  举报