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

python

1、三元表达式

  作用:可以将if...else...分支编程一行来写

  if判断的语法:

  if 判断条件:

  执行

  else

  执行

  三元表达式语法:

  条件成立返回左边的值 if 判断条件 else 条件不成立返回右边的值

 

  例子1:求两个值的大小

# 例:求两个值的大小

# 使用if判断实现

def max(x, y):

if x > y:

return x

else:

return y

res = 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

回到顶部