# 针对下述场景defmax2(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 # 三元表达式
二、列表生成式
列表生成式是python为我们提供的一种简化代码的解决方案,用来快速生成列表,语法如下
[expression for item1 in iterable1 if condition1 ...]
l =[i for i inrange(10)]print(l)
names =['aaa','bbb','ccc_sb','dddd_sb','eeee_sb']
sbs =[name for name in names if name.endswith('sb')]print(sbs)>>>[0,1,2,3,4,5,6,7,8,9]>>>['ccc_sb','dddd_sb','eeee_sb']
三、生成器表达式
生成器表达式,与列表生成式的语法格式相同,只需要将[]换成(),语法如下
(expression for item in iterable if condition)
对比列表生成式返回的是一个列表,生成器表达式返回的是一个生成器对象
[x*x for x inrange(3)]>>>[0,1,4]
g=(x*x for x inrange(3))
g
>>><generator object<genexpr> at 0x101be0ba0>
res =(i for i inrange(5))print(res)print(next(res))
如果我们要读取一个大文件的字节数,应该基于生成器表达式的方式完成
withopen('a.txt', mode='rt', encoding='utf-8')as f:
nums=(len(line)for line in f)
total_size=sum(nums)# 依次执行next(nums),然后累加到一起得到结果
一、三元表达式三元表达式是python为我们提供的一种简化代码的解决方案,语法如下res = 条件成立时返回的值 if 条件 else 条件不成立时返回的值# 针对下述场景def max2(x,y): if x > y: return x else: return yres = max2(1,2)# 用三元表达式可以一行解决x=1y=2res = x if x > y else y # 三元表达式二、列表生成式列表生成式