Python中的四种推导式

推导式

列表推导式

这是一种最常见的推导式,相比有不少人都用过,至少也见过,减少了了编写Python代码的代码长度
语法结构是这样的

[out_exp_res for out_exp in input_list]
[out_exp_res for out_exp in input_list if condition]

给出一个实例就是

x = [x * 2 for x in [1, 2, 3]]
y = [x * 2 for x in [1, 2, 3, 4] if x > 2]
print(type(x))
print(type(y))

# <class 'list'>
# <class 'list'>

字典推导式

主要用于快速创建一个字典

{key_expr : value_expr for value in collection}
{key_expr : value_expr for value in collection if condition}

给出一个实例就是

x = {x: x * 2 for x in [1, 2, 3]}
y = {x: x * 2 for x in [1, 2, 3, 4] if x > 2}
print(type(x))
print(type(y))

# <class 'dict'>
# <class 'dict'>

集合推导式

用于快速创建一个集合

{ expression for item in Sequence }
{ expression for item in Sequence if condition }

给出一个实例就是

x = {x for x in [1, 2, 3]}
y = {x for x in [1, 2, 3, 4] if x > 2}
print(type(x))
print(type(y))

# <class 'set'>
# <class 'set'>

元组推导式(生成器表达式)

可以利用一个 Iterable 的对象制作一个生成器,优势在于空间占用较小,每次使用访问实时计算。

(expression for item in Sequence)
(expression for item in Sequence if condition)

给出一个实例就是

x = (x for x in range(1, 10))
y = (x for x in range(1, 100) if x > 10)
print(x)
print(y)
print(type(x))
print(type(y))

# <generator object func11.<locals>.<genexpr> at 0x102a736b0>
# <generator object func11.<locals>.<genexpr> at 0x102f052f0>
# <class 'generator'>
# <class 'generator'>

至于空间问题笔者曾在另一篇介绍可迭代、迭代器、生成器区别的时候已经有所提及,这里就不再赘述。

posted @ 2023-10-03 21:31  Gensokyo_Alice  阅读(109)  评论(0)    收藏  举报