三元表达式:就是if...else...的语法糖
# 用于简化 if...else...的语法结构
# 只能解决if...else...结构,其他if分支结构都不管
# 一个分支提供一个结果: 如果一个分支提供了多个结果, 将多个结果通过元组返回
def my_max(x,y):
if x > y:
return x
else:
return y
# res = x if x > y else y 三元表达式
三元表达式固定表达式
值1 if 条件 else 值2
条件成立 得到值1
条件不成立 得到值2
列表生成式
# 列表ls = [变量i for 变量i in 容器类数据 if 条件] #其他if分支结构不支持
# 先for循环依次取出容器里面的每一个元素
# 然后交由if判断 条件成立才会交给for前面的代码
# 将元素加到列表中
# 如果条件不成立 当前的元素 直接舍弃
l = ['tank_sb', 'nick_sb', 'oscar_sb', 'sean_sb','jason_NB']
res = [name for name in l if name.endswith('_sb')]
print(res)
结果#['tank_sb', 'nick_sb', 'oscar_sb', 'sean_sb']
集合生成式
# 集合se = {变量i for 变量i in 容器类数据 if 条件} #其他if分支结构不支持
# 先for循环依次取出容器里面的每一个元素
# 然后交由if判断 条件成立才会交给for前面的代码
# 将元素加到集合中
# 如果条件不成立 当前的元素 直接舍弃
res = {i for i in range(10) if i != 4}
print(res)
结果 # {0, 1, 2, 3, 5, 6, 7, 8, 9}
字典生成式
# 字典dic = {变量i:变量j for 变量i,变量j in enumerate(列表数据) if 条件} #其他if分支结构不支持
# 先通过enumerate枚举出类列表中的索引和对应元素
# for循环依次取出枚举结果里面的索引和对应元素
# 然后交由if判断 条件成立才会解压赋值给for前面的变量
# 索引为键对应元素为值存在字典中
# 如果条件不成立 当前索引和对应元素直接舍弃
l1 = ['jason','123','read']
d = {i:j for i,j in enumerate(l1) if j != '123'}
print(d)
结果# {0: 'jason', 2: 'read'}
元组生成器表达式
# 集合se = (变量i for 变量i in 容器类数据 if 条件) #其他if分支结构不支持
# 先for循环依次取出容器里面的每一个元素
# 然后交由if判断 条件成立才会交给for前面的代码
# 将元素加到元组中
# 如果条件不成立 当前的元素 直接舍弃
res1 = (i for i in range(10) if i != 4)
结果 # <generator object <genexpr> at 0x101055a98>
元组的生成器
print(list(res1))
# [0, 1, 2, 3, 5, 6, 7, 8, 9]