Python 推导式
2019-05-02 本文已影响0人
Rethink
Python v3.7.0
推导式(comprehensions),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。
列表推导式
格式:
[expression for item in iterable if condition]
expression :列表生成的值,也可以是表达式
for item in itreable:将item传入并迭代iterable
if condition:条件表达式
例子:
from functools import reduce
var = [i for i in range(10) if i % 2 == 0]
sum = reduce(lambda x, y: x + y, [i for i in range(10) if i % 2 == 0])
print(var, sum, sep='\n')
>>>
[0, 2, 4, 6, 8]
20
字典推导式
字典推导式的使用方法和列表推导式是类似的,只需要把[]
替换成{}
.
case = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
case_revesed = {v: k for k, v in case.items()}
print(case_revesed)
>>>
{'Zara': 'Name', 7: 'Age', 'First': 'Class'}
集合推导式
集合推导式,使用格式和字典推导式完全相同,用来生成集合类型的数据。
squared = {x ** 2 for x in [1, 1, 2]}
print(multiples, type(multiples), tuple(multiples), sep='\n')
>>>
{1, 4} <class 'set'>
生成器推导式
生成器推导式和列表推导式差不多,只是由中括号[]变成了括号(),但这并不是元组推导式,元组没有推导式。它返回一个可迭代对象,可以根据需要将他转化为列表或者元组。
multiples = (i for i in range(30) if i % 3 is 0)
print(multiples, type(multiples))
>>>
<generator object <genexpr> at 0x10e784408>
<class 'generator'>
(0, 3, 6, 9, 12, 15, 18, 21, 24, 27)
To be continued...