三元表达式、列表生成式、生成器表达式
1、三元表达式
作用:可以将if...else...分支编程一行来写
if判断的语法:
if 判断条件: 执行
else: 执行
三元表达式语法:
条件成立返回左边的值 if 判断条件 else 条件不成立返回右边的值
例子1:求两个值的大小
# 例:求两个值的大小#
使用if判断实现def max(x, y):
if x > y:return xelse:return yres
= max(2, 3)print(res)# 使用三元表达式实现def max(x, y):
res = x if x > y else y
return res
res = max(10, 100)
print(res)
例子2:让用户输入用户名,输入的用户如果不是tank,为其后缀添加_DSB(大帅哥)
username = input("请输入用户名:").strip()new_username
= username if username == "tank"else f"{username}_DSB"print(new_username)
2、列表生成式
作用:可以一行代码实现生成列表
列表生成式语法:
list = [去除的每一个值添加到当前列表中/也可以取任意值 for 可迭代对象中取出的每一个值i in 可迭代对象]# for的右边是循环次数,也可以取出可迭代对象中的每一个值#
for的左边可以为当前列表添加值list = [值 for 可迭代对象中取出的每一个值i in 可迭代对象 if 判断]
例:
list2 = ["1"for i in range(1, 101)]print(list2) # 生成一个有100个"1"的列表
例题1:生成一个1-100的列表
# 通过for循环添加值,生成一个1-100的列表list1 = []
for line in range(1, 101):list1.append(line)
print(list1)# 通过列表生成式生成一个1-100的列表list = [i for i in range(1, 101)]
print(list)
例题2:将name_list列表中的每一个元素的后缀都添加上_DSB
list1 = ["bear", "banana", "apple", "orange"]new_list1
= [i + "_DSB"for i in list1]print(new_list1)
例题3:在例题2的基础上,将apple过滤掉,其他元素后缀都添加_DSB
list1 = ["bear", "banana", "apple", "orange"]new_list1
= [i + "_DSB"for i in list1 ifnot i == "apple"]print(new_list1)
3、生成器表达式
生成器表达式也叫作生成器生成式
列表生成式: 若数据量小时采用 [i
for i in range(1, 6)] --> [1, 2, 3, 4, 5] 优点:
可以依赖于索引取值,取值方便
缺点:
浪费资源
生成器生成式: 若数据量大时采用
()
--> 生成器 (i
for i in range(1, 6)) --> g生成器(1, 2, 3, 4, 5) # 生成器使用小括号(),自定义用g表示 优点:
节省资源
缺点:
取值不方便
例题:生成一个有50个值的生成器
# 列表生成时实现:生成一个有1000个值的生成器g = [i for i in range(1, 51)]
print(g) # 打印出一个列表# 生成器生成式:生成一个有1000个值的生成器
g = (i for i in range(1, 51))
# <generator object <genexpr> at 0x000002462EF79570>
print(g) # 打印出一个生成器对象
print(g.__next__()) # 打印出第一个值 1
print(g.__next__()) # 打印出第二个值 2
以上是 三元表达式、列表生成式、生成器表达式 的全部内容, 来源链接: utcz.com/z/530764.html