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

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>

以上是关于三元表达式列表生成式生成器表达式的主要内容,如果未能解决你的问题,请参考以下文章

三元表达式,列表推导式和字典生成式

列表生成式和三元表达式(python3入门)

递归/匿名函数/三元表达式/列表生成式/字典生成式/二分算法

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

生成器 三元表达式 列表生成式 匿名函数 内置函数

三元表达式,列表生成式,字典生成式,生成器表达式