[关闭]
@chengweihuang 2019-04-19T01:48:54.000000Z 字数 1327 阅读 800

lambda 表达式

每日总结

map()? reduce()?

  1. def f(x):
  2. return x*x
  3. L=[]
  4. for n in range(1,9):
  5. L.append(f(n))
  6. print(L)

map()作为高阶函数,事实上它把运算规则抽象了。map()函数接收两个参数,一个是函数,一个是Iterable(迭代),map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

  1. def f(x):
  2. return x*x
  3. print(list(map(f,range(1,9))))

将这个list所有数字转为字符串:

  1. list(map(str, range(1,10)))

将一组由数字拼接成的字符串,转为数字

  1. aa=map(int,"1,2,3,4,5,6,7".split(','))
  2. print(list(aa))
  1. aa=map(int,"1234567")
  2. print(list(aa))

python3--- from functools import reduce

reduce()使用
把序列[1,2,3,4,5,6]变换成整数123456

  1. def fn(x,y):
  2. return x*10+y
  3. print(reduce(fn,[1,2,3,4,5,6]))

把'123456'字符串转换成整数123456 不用int()

  1. my_nums = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
  2. def fn(x,y):
  3. return x*10+y
  4. def charnum(s):
  5. a=my_nums[s]
  6. return a
  7. print(reduce(fn,map(charnum,'123456')))

lambda

  1. my_nums = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
  2. def charnum(s):
  3. a=my_nums[s]
  4. return a
  5. print(reduce(lambda x,y:x*10+y,map(charnum,'123456')))

lambda表达式

lambda argument_list: expression
argument_list : 参数列表
expression : 关于参数的表达式
lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数

add=lambda x, y: x+y
add(1,2)

time.sleep=lambda x:None 屏蔽 time.sleep

return lambda x, y: x+y 函数的返回值也可以是函数

lambda表达式 与其他函数搭配使用

filter函数 过滤
filter(lambda x: x % 3 == 0, [1,2,3,4,5,6,7,8,9])
使用定义函数是这样的

def num_three(x):
    return x % 3 ==0
filter(num_three,[1,2,3,4,5,6,7,8,9])

sorted排序

  1. print(sorted([1, 2, 3,11, 4, 5, 6, 7, 8, 9]))
  2. print(sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x)))

reversed() 逆转集合

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注