高级特性
1、集合推到式
列表推导式 语法:[exp for item in collection if codition]
字典推导式 语法:{key_exp:value_exp for item in collection if codition}
集合推导式 语法:{exp for item in collection if codition}
嵌套列表推导式
前面的式外层循环,后面的式内层循环
result = []
for elem in vec:
for num in elem:
result.append(num)
等价于:
result = [ num for v in vec for num in v ]
2、多函数模式
可以向一个函数中,传入一系列的函数,对于输入的数据进行处理。将所有的函数放入一个列表中。
# 处理字符串
str_lst = ['$1.123', ' $1123.454', '$899.12312']
def remove_space(str):
"""
remove space
"""
str_no_space = str.replace(' ', '')
return str_no_space
def remove_dollar(str):
"""
remove $
"""
if '$' in str:
return str.replace('$', '')
else:
return str
def clean_str_lst(str_lst, operations):
"""
clean string list
"""
result = []
for item in str_lst:
for op in operations:
item = op(item)
result.append(item)
return result
clean_operations = [remove_space, remove_dollar]
result = clean_str_lst(str_lst, clean_operations)
print result
3、高级函数
1、函数式编程
(1)函数本身可以赋值给变量,赋值后变量为函数;
(2)允许将函数本身作为参数传入另一个函数;
(3)允许返回一个函数。
2、map/reducde 函数
(1)map(fun, lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表返回
(2)reduce(func(x,y),lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。
lst = [a1, a2 ,a3, ......, an]
reduce(func(x,y), lst) = func(func(func(a1, a2), a3), ......, an)
3、filter
filter(func, lst),将func作用于lst的每个元素,然后根据返回值是True或False判断是保留还是丢弃该元素。
注:优先使用列表推导,代码简单易懂。不需要编写另外的函数。比如匿名函数
网友评论