匿名函数
fun = lambda x : x*2 print(fun) print(fun(2)) >>> <function <lambda> at 0x10b9197a0> >>> 4 说明: fun ->函数名 lambda ->相当于定义函数的def, 匿名函数的定义就用lambda x -> 匿名函数的形参 x * 2 —> 匿名函数返回值
匿名函数的特点:临时存在,用完就没了
匿名函数的应用:一般与内置函数一起连用。
name_list = ['jason', 'tank', 'egon'] salary_list = [100, 200, 300] dic = {k:v for k, v in zip(name_list, salary_list)} #找出dic中工资最高的那个人的人名 print(max(dic, key=lambda name: dic[name])) >>>egon
内置函数
filter:
class filter(object): """ filter(function or None, iterable) --> filter object Return an iterator yielding those items of iterable for which function(item) is true. If function is None, return the items that are true. def fun(x): return x % 2 print(list(filter(fun, [1,2,3,4]))) >>> [1, 3]
理解重点:
返回值为: (item for item in iterable if function(item))
def fun(x): if x % 2: return False return True print(list(filter(fun, [1,2,3,4]))) # (item for item in iterable if function(item)) >>>[2, 4]
map:
map
(function, iterable, ...)
Return an iterator that applies function to every item of iterable, yielding the results.
如果有多个iterable, 取多组iterable的第一个、第二个...组成一个个元组传给function。
With multiple iterables, the iterator stops when the shortest iterable is exhausted
只有一个iterable,map相当于把function作用到iterable的每一个元素上。
相当于:( function(item) for item in iterable )
iterable_list = [1,2,3,12] print(list(map(lambda x:x*x, iterable_list))) >>> [1, 4, 9, 144]
不算是内置函数的reduce
functools.
reduce
(function, iterable[, initializer])- Apply function of two arguments cumulatively to the items of sequence, from left to right,
- so as to reduce the sequence to a single value.
- For example,
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
calculates((((1+2)+3)+4)+5)
.
from functools import reduce l = [1, 2, 3, 4] def func(x, y): return x * y res = reduce(func, l) print(res) >>> 24
zip:
把每一个迭代器的元素聚合起来,返回一个元组
zip
(*iterables)
1、Make an iterator that aggregates elements from each of the iterables.
Returns an iterator of tuples
x = [1, 2, 3, 4] y = [1, 2, 3, 4] res = zip(x, y) print(*res) >>> (1, 1) (2, 2) (3, 3) (4, 4)
x = [1, 2, 3, 4]
y = [1, 2, 3, 4]
res = zip(x, y)
print(list(zip(*res)))
>>> [(1, 2, 3, 4), (1, 2, 3, 4)]
2、The iterator stops when the shortest input iterable is exhausted.
3、With a single iterable argument, it returns an iterator of 1-tuples.
4、With no arguments, it returns an empty iterator