三元表达式列表生成式生成器表达式
Posted aheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三元表达式列表生成式生成器表达式相关的知识,希望对你有一定的参考价值。
三元表达式
三元表达式就是可以将if...else...分支,变成一行
语法
条件成立返回左边的值 if 判断条件 else 不成立返回右边的值
def max(num1,num2):
# 条件成立返回左边的值 if 判断条件 else 不成立返回右边的值
res = num1 if num1>num2 else num2
return res
res = max(10,20)
print(res)
列表生成式
列表生成式就是可以一行实现生成列表
语法
[取出的每一个任意值添加到当前列表中 for 可迭代对象中取出每一个值 in 可迭代对象]
# 取出的每一个任意值添加到当前列表中 for 可迭代对象中取出每一个值 in 可迭代对象
list1 = [line for line in range(1,101)] # 生成一个列表,里边是1-100
print(list1)
for的右边是循环次数,可以取出可迭代对象中的每一个值
for的左边可以为当前列表添加值
list1 = ['sean','tank','egon','alex']
# 为list1中的每个name后加上'_DSB'并过滤掉alex
new_list = [name + '_DSB' for name in list1 if not name == 'alex']
print(new_list)
生成器表达式(生成器生成式)
——列表生成式
[line for line in rang(1,6)]--->[1, 2, 3, 4, 5]
——生成器生成式
()--->返回生成器
g = (line for line in range(1,6))--->g生成器(1, 2, 3, 4, 5)
列表生成器(当数据量比较小时采用)
优点:可以依赖索引取值,取值方便
缺点:浪费资源
生成器生成式(当数据量较大时采用)
优点:节省资源
缺点:取值不方便
# 生成一个有1000个值的生成器
g = (line for line in range(1, 1000001))
print(g)
# <generator object <genexpr> at 0x00000203262318E0>
以上是关于三元表达式列表生成式生成器表达式的主要内容,如果未能解决你的问题,请参考以下文章