python之三元表达式、列表生成式、字典表达式、生成器表达式
1.三元表达式
格式为:条件成立时的返回值 if 条件 else 条件不成立时的返回值
总结:多行判断,一行代码解决。就是一条if判断的简写代码语法
2.列表生成式 方括号【】
快速生成一个列表,也是一条简写代码语法
格式: l=[item**2 for item in range(1,11)]
print (l)
names=['alex,'wxx','lxx']
names=[name+'sb' for name in names] #循环列表并在每个字符串后加sb
print (names)
# names=[name+'SB' for name in names if name != 'egon'] #还可以结合if判断
# print(names)
3.字典表达式: 花括号{}
s1='hello'
l1=[1,2]
res=zip(s1,l1) #res迭代器对象 zip把s1和l11 对应压缩 (拉链式) 配对取出对应的值 多出的就不用了
print(list(res)) 列表都是全部取出 () res迭代器不运行,next才执行代码,next一次取一次
# keys=['name','age','sex']
# values=['egon',18,'male']
# d={k:v for k,v in zip(keys,values)} #字典的压缩压
# print(d)
通过迭代器对象取值,可以起到节约内存的作用
4.生成器表达:小括号()
g=(i for i in range(10)) “”定义为迭代器对象不执行代码,直到next才执行一次代码
pirnt (g) #定义为迭代器对象(内存地址),不占内存,取值的时候在一个个取出
print(next(g))
pirnt(next(g))
max #可迭代对象 循环next取值比较大小
# nums=[11,22,33,44,55]
# print(max(nums)) #循环取值比较大小
# with open('a.txt',encoding='utf-8') as f:
# nums=(len(line) for line in f) 定义为生成器 就是迭代器不执行代码,next才执行一次代码,取一次值就少一次
# print(max(nums)) 如果定义为nums=[len(line) for line in f]就不会报错 因为列表会把所有的值列出了
# print(max(nums))
# print(max(nums) 在运行的时候就会报错,因为文件已经关闭