三元表达式、生成式、生成器表达式
三元表达式
三元表达式是python为我们提供的一种简化代码的解决方案,语法如下
res = 条件成立时返回的值 if 条件 else 条件不成立时返回的值
示例:
#原代码 def max2(x,y): if x > y: return x else: return y res = max2(1,2) #用三元表达式可以一行解决 x=1 y=2 res = x if x > y else y # 三元表达式
生成式
l = ['alex_dsb', 'lxx_dsb', 'wxx_dsb', "xxq_dsb", 'egon']
#1、列表生成式 # 把所有小写字母全变成大写 # new_l=[name.upper() for name in l] # print(new_l) # 把所有的名字去掉后缀_dsb # new_l=[name.replace('_dsb','') for name in l] # print(new_l) # 2、字典生成式 # keys=['name','age','gender'] # dic={key:None for key in keys} # print(dic) # items=[('name','egon'),('age',18),('gender','male')] # res={k:v for k,v in items if k != 'gender'} # print(res) # 3、集合生成式 # keys=['name','age','gender'] # set1={key for key in keys} # print(set1,type(set1))
生成器表达式
创建一个生成器对象有两种方式,一种是调用带yield关键字的函数,另一种就是生成器表达式,与列表生成式的语法格式相同,只需要将[]换成(),即:
(expression for item in iterable if condition)
# 生成器表达式 # g=(i for i in range(10) if i > 3) # !!!!!!!!!!!强调!!!!!!!!!!!!!!! # 此刻g内部一个值也没有 # print(g,type(g)) # print(g) # print(next(g)) # print(next(g)) # print(next(g)) # print(next(g)) # print(next(g)) # print(next(g)) # print(next(g)) #统计文件中的字符个数 with open('笔记.txt',mode='rt',encoding='utf-8') as f: # 方式一: # res=0 # for line in f: # res+=len(line) # print(res) # 方式二: # res=sum([len(line) for line in f]) # print(res) # 方式三 :效率最高 # res = sum((len(line) for line in f)) # 上述可以简写为如下形式 res = sum(len(line) for line in f) print(res)