三元表达式,列表生成式,生成器生成式

三元表达式

能够将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>
#生成器表达式节省空间
相关文章
相关标签/搜索