推导式
列表推导式
这是一种最常见的推导式,相比有不少人都用过,至少也见过,减少了了编写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'>
至于空间问题笔者曾在另一篇介绍可迭代、迭代器、生成器区别的时候已经有所提及,这里就不再赘述。
标签:推导,Python,item,condition,print,type,四种,out From: https://www.cnblogs.com/Gensokyo-Alice/p/17741691.html