匿名函数与内置函数

匿名函数

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

 

posted @ 2019-07-14 01:10  KbMan  阅读(255)  评论(0编辑  收藏  举报