12-三元表达式、生成式
作者:互联网
一、三元表达式
为什么要有三元表达式?
# 针对以下需求 def func(x,y): if x > y: return x else: return y res=func(1,2) print(res)
三元表达式的语法格式: 条件成立时 要返回的值 if 条件 else 条件不成立时 要返回的值
x=1 y=2 res=x if x > y else y print(res)
应用举例:
# 应用举例 def func(): """ if 1 > 3: x=1 else: x=3 """ x = 1 if 1 > 3 else 3
二、生成式
2.1 列表生成式
l = ['alex_dsb', 'lxx_dsb', 'wxx_dsb', "xxq_dsb", 'egon'] # 不使用生成式实现: new_l=[] for name in l: if name.endswith('dsb'): new_l.append(name) print(new_l) # ['alex_dsb', 'lxx_dsb', 'wxx_dsb', 'xxq_dsb'] # 使用生成式实现: new_l=[name for name in l if name.endswith('dsb')] print(new_l) # ['alex_dsb', 'lxx_dsb', 'wxx_dsb', 'xxq_dsb'] new_l=[name for name in l] # 若无须条件判断,则可省略后面的判断 print(new_l) # ['alex_dsb', 'lxx_dsb', 'wxx_dsb', "xxq_dsb", 'egon']
其他需求:
# 把所有小写字母全变成大写 new_l=[name.upper() for name in l] # 把所有的名字去掉后缀_dsb new_l=[name.replace('_dsb','') for name in l]
2.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)
2.3 集合生成式
keys=['name','age','gender'] set1={key for key in keys} print(set1,type(set1))
2.4 生成器表达式(***重点***)
g=(i for i in range(10) if i > 3) # !!!!!!!!!!!强调!!!!!!!!!!!!!!! # 此刻g内部一个值也没有 print(g,type(g)) # <generator object <genexpr> at 0x000001AB56B61890> <class 'generator'> print(next(g)) # 4 print(next(g)) # 5 print(next(g)) # 6 print(next(g)) # 7 # g.close() # 此处若关闭生成器,在下一次next(g)时就会抛出异常 print(next(g)) # 8 print(next(g)) # 9 print(next(g)) # 抛出异常 StopIteration
标签:12,name,生成式,next,print,new,dsb,表达式 来源: https://www.cnblogs.com/zhubincheng/p/12570283.html