lambda map reduce filter sort 姐妹们

人生苦短 我用python

开始愉快的享(代)受(码)时间:

  • Lambda

  • 匿名函数可作为参数传递
  • 匿名函数能接收任何数量的参数但只能返回一个表达式的值
形式:  lambda: 参数1,参数2... :  表达式
一般形式:
result = lambda x,y : x+y

函数作为参数传递形式:
def calculate(a, b, method):
    print("
收到的数字为
", a, b)
    return method(a, b)
print(calculate(10, 20, lambda a,b:a+b))
  • map

  • 对序列中的item 依次执行function(item)操作
  • map(fun, 序列)
list1 = [1, 2, 2, 3, 4, 89]
resutl = map(str, list1) # 将列表中的元素转为str类型
print(resutl)  # 
print(list(resutl)) # ['1', '2', '2', '3', '4', '89']

或者:
list1 = [1, 2, 2, 3, 4, 89]
resutl1 = map(lambda x: str(x), list1) # 用匿名函数表示
print(list(resutl1)) # ['1', '2', '2', '3', '4', '89']
  • reduce

  • 对序列中的item 顺序迭代调用函数操作, 函数必须要有2个参数,结果返回一个值 (例如:递归求和)
  • 在python3中 reduce不是内建函数 需要引入 from funtools import reduce
  • reduce(fun,序列)
from functools import reduce
list1 = [1, 2, 2, 3, 4, 89]
result = reduce(lambda x, y: x+y, list1) # 结果: 101  逻辑: 1+2+3+4+5...  
print(result)
  • filter 过滤
  • 依次对序列中的item调用函数操作 进行判断 将符合条件的item保留 组成序列返回
  • filter(fun,序列)
list1 = [1, 2, 2, 3, 4, 89]
result = filter(lambda x: x % 2 == 0, list1)  # 结果类型
print(list(result))  # 强转类型后结果: [2, 2, 4]

  • sorted 排序

参考 https://www.cnblogs.com/whaben/p/6495702.html

  • 接收一个比较函数来实现自定义排序 函数规定按照什么来进行排序
  • 默认按照小于运算符排序
  • sorted(序列,key=fun, reserve=false(默认false,是否反转))
  • key参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较。这个技术是快速的因为key指定的函数将准确地对每个元素调用。
  • list对象本身可以调用sort()方法实现排序 但没有返回值(none)
默认排序
print(sorted(list1)) #  [1, 2, 2, 3, 4, 7, 8, 54, 89]

指定排序:
student_tuples = [
        ('john', 'A', 15),
        ('jane', 'B', 12),
        ('dave', 'B', 10),
]
sorted(student_tuples, key=lambda student: student[2])   # 按照年龄排序 结果 [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

lambda map reduce filter sort 姐妹们_第1张图片

你可能感兴趣的:(lambda map reduce filter sort 姐妹们)