三元表达式、生成式、生成器表达式
一、三元表达式
三元表达式是python为我们提供的一种简化代码的解决方案,语法如下
res = 条件成立时返回的值 if 条件 else 条件不成立时返回的值
def max(x, y):
if x > y:
return x
else:
return y
res = max(1, 2)
# 用三元表达式一行解决
x = 1
y = 2
res = x if x > y else y
二、生成式
1、列表生成式
l = []
for i in range(1,6):
if i < 6:
l.append(i)
l = [i for i in range(1,6)]
l = [i**2 for i in range (1,6)]
l = [i for i in range (1,6) if i > 3]
2、字典生成式
res ={k:v for k,v in [(‘name‘,‘tom‘),(‘age‘,18)]}
print(res)
>>>{‘name‘: ‘tom‘, ‘age‘: 18}
3、集合生成式
res = {i for i in range(5)}
print(res)
>>>{0,1,2,3,4}
三、生成器表达式
创建一个生成器对象有两种方式,一种是调用带yield关键字的函数,另一种就是生成器表达式,与列表生成式的语法格式相同,只需要把[ ]换成( )
(expression for item in iterable if conditio)
# 生成器表达式
g = (i for i in range(10) if i > 3)
# 此时g内部没有值,只是一些代码
print(type(g))
>>><class ‘generator‘>
统计文件中字符个数
with open(‘文件.txt‘,mode=‘rt‘,encoding=‘utf-8‘)as f:
# plan 1
# res = 0
# for line in f:
# res +=len(line)
# print(res)
# plan2
# res = sum([len(line) for line in f])
# print(res)
# plan3
res = sum(len(line) for line in f)
print(res)
//非原创,仅供学习交流//