能够将if...else..…分支变成一行less
语法:code
条件为真时的结果 if 判断的条件 lese 条件为假时的结果
对象
a = 1 b = 2 #第一种写法 erroStr = "More" if a > b else "Less" print(erroStr) # 运行结果为:Less #第二种写法 print({True:'More',False:'less}[a > b]')#运行结果为Less #第三种写法 print(("FalseValue", "TrueValue")[a > b]) # 运行结果为:FalseValue
能够一行实现生成列表索引
语法:资源
list = [值 for 可迭代对象中取出的每个值 in 可迭代对象] list = [值 for 可迭代对象中取出的每个值 in 可迭代对象 if 判断]
# 列表生成式 # list1 = [f'1{line}' for line in range(1, 101)]# print(list1)
# Demo: 将name_list列表中的每个人后缀都添加_dsb # name_list = ['jason', '饼哥(大脸)', 'sean', 'egon'] # new_name_list = [name + '_dsb' for name in name_list] # print(new_name_list)
应用场景:数据量小时采用generator
[line for line in range(1, 6)] ---> [1, 2, 3, 4, 5]
优势:可依赖索引取值,取值方便it
缺点:浪费资源class
生成器表达式(生成器生成式)object
应用场景:数据量过大时使用
(line for line in range(1, 6)) ---> g生成器(1, 2, 3, 4, 5)
优势:节省资源
缺点:取值不方便
list1 = [line for line in range(1, 1000001)] #列表生成式会将所有内容加载出来,浪费空间 g = (line for line in range(1, 1000001)) #<generator object <genexpr> at 0x0000026A4C1F0ED0> #生成器表达式节省空间