目录
基础:Python匿名函数, lambda函数
f = x+y^3
f = lambda x, y: x + y**3
1. map函数
map函数调用格式: map(func, *iterables), map函数接收到一个函数func和一个列表,把函数func依次作用在列表的每个元素上,得到一个新的列表。
import math
b = map(math.sqrt, [4 for b in range(3)])
print(list(b))
>[2.0, 2.0, 2.0]
2. reduce函数
reduce函数调用格式为: reduce(func, sequence, [,initial]), 其中func是有两个参数的函数,sequence是元组、列表、字典、字符串等可迭代对象,intial是可选的初始值。
reduce的工作过程是 :在迭代sequence的过程中,首先把前两个元素传给函数参数,函数加工后,然后把得到的结果和第三个元素作为两个参数传给函数参数,函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推。如果传入了initial值,那么首先传的就不是sequence的第一个和第二个元素,而是initial值和第一个元素。经过这样的累计计算之后合并序列到一个单一返回值。
计算5!:
from functools import reduce
print(reduce(lambda x, y: x*y, range(1,6))
> 120
3. filter函数
函数调用格式为:filter(func, iterable)。主要作用是通过func对iterable中的元素进行过滤,并返回一个迭代器(iterator),返回使得func为True的元素。
输出20以内3的倍数
print(list(filter(lambda x : x % 3 == 0, range(21))))
> [0, 3, 6, 9, 12, 15,18]
4. zip()函数
zip(列表1,列表2):将多个列表或元组对应位置的元素组合成元组,并返回包含这些元组的zip对象。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。(来源:菜鸟教程)
a = range(1,6)
b = ['A', 'B', 'C', 'D', 'E']
c = zip(a,b)
list(c)
> [(1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E')]
e, f = zip(* c)
print(e, f)
> (1, 2, 3, 4, 5) ('A', 'B', 'C', 'D', 'E')
5. enumerate()函数
enumerate()函数枚举列表、元组或其他可迭代对象的元素(字符串,字典),返回枚举对象,枚举对象中的每个元素是包含下标和元素值的元组。该函数对字符串、字典同样有效。
a = [{'0': 'A'}, {'1': 'B'}, {'2': 'C'}, {'3': 'D'}]
for b in enumerate(a):
print(b)
>
(0, {'0': 'A'})
(1, {'1': 'B'})
(2, {'2': 'C'})
(3, {'3': 'D'})