python3 三元表达式、列表推导式、生成器表达式

一、三元表达式 

# 三元表达式的几种写法
a = 1
b = 2

# 第一种写法
erroStr = "More" if a > b else "Less"
print(erroStr) # 运行结果为:Less


# 第二种写法
print({True: 'res=a', False: "a<b"}[a > b]) # 运行结果为:Less


# 第三种写法
print(("FalseValue", "TrueValue")[a > b]) # 运行结果为:FalseValue

###一般来说二、三种写法不常用;FalseValue等同于 False; TrueValue等同于True

从代码示例可得出,三元表达式中,判断条件为一元,条件为True的结果为一元,条件为False的结果为一元,其格式如下:

 条件为True的结果  if 判断条件  else 条件为False的结果


 二、列表推导式

表达式:[expression for iter_val in iterable if cond_expr]

  • [expression]:最后的结果
  • [for iter_val in iterable]:循环体
  • [if cond_expr]:两个for间是不能有判断语句的,判断语句只能在最后;顺序不定,默认是左到右。
'''
列表解析

version:01
author:jasn
date:2020-02-04-23:16

'''

# 无条件的列表解析式
lists = [2*i for i in range(5)]
print(lists)
#  >>>[0, 2, 4, 6, 8]

# 带条件子句的列表解析式
lists1 = [i for i in range(10) if i > 4]
print(lists1)
# >>>[5, 6, 7, 8, 9]


# 多重循环的列表解析式
print([(i,j) for i in [1,3,5] for j in [2,4,6]])
# >>>[(1, 2), (1, 4), (1, 6), (3, 2), (3, 4), (3, 6), (5, 2), (5, 4), (5, 6)]

三、生成器表达式

生成器表达式是一个对象,它执行的方式同与列表推导式基本一致,但它以迭代的方式生成结果。例如:

'''
生成器表达式

version:01
author:jasn
Date:2020-02-03

'''

egg_list = ('egg%s' % i for i in range(1, 10000000))
print(egg_list)
# >>><generator object <genexpr> at 0x0000013FED020890>

print(next(egg_list))
# >>>egg1

print(next(egg_list))
# >>>egg2

print(next(egg_list))
# >>>egg3

生成器表达式和列表推导式的区别

生成器格式最外层是一个(),而列表解析格式最外层是一个[]。 #格式区别

生成器是next一次读取一次数据(只占用内存命名空间),而列表解析是一次读取所有数据 (耗内存) #内存操作区别

生成器表达式返回的是生成器对象,需要调用输出,列表推导式直接对应一个列表,可以直接print输出。#结果区别

发布了46 篇原创文章 · 获赞 37 · 访问量 4534

猜你喜欢

转载自blog.csdn.net/weixin_42444693/article/details/104176486