1. 匿名函数
lambda [arg1 [,arg2,.....argn]]:expression
lambda 函数是不需要使用 def 语句定义的一个简易函数,其语法只包含一个语句。
>>> double=lambda x:x*2
>>> double(5)
10
x 是lambda函数的参数,将返回表达式 x*2 的值。
相当于:
def double(x):
return x * 2
lambda 函数通常与内置函数 map()、filter() 等联合使用。
>>> my_list = [1, 5, 4, 6, 8, 11, 3, 12]
>>> new_list = list(filter(lambda x:x%2==0, my_list)) # 筛选出my_list中的所有偶数元素
>>> print(new_list)
[4, 6, 8, 12]
2. Python 中的一些常用函数
1) map() 函数
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
语法:
map(function, iterable, ...)
返回值:
python2 返回一个列表
python3 返回一个迭代器
>>> def square(x):
return x**2
>>> my_list = [1, 5, 4, 6, 8, 11, 3, 12]
>>> map(square,my_list) # 返回一个可迭代的 map 对象,可使用 list() 将其转换为列表;square 是一个函数引用,没有括号
map() 函数可以包含多个序列:
>>> list(map(lambda x,y:x+y,my_list,new_list))
[3, 8, 9, 13, 16, 30, 16, 14]
如果函数有多个参数, 但每个参数的序列元素数量不一样, 会根据最少元素的序列进行:
>>> listx = [1,2,3,4,5,6,7] # 7 个元素 >>> listy = [2,3,4,5,6,7] # 6 个元素 >>> listz = [100,100,100,100] # 4 个元素 >>> list_result = map(lambda x,y,z : x**2 + y + z,listx, listy, listz) >>> print(list(list_result)) [103, 107, 113, 121]
2) filter() 函数
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到 新列表中
语法
filter(function, iterable)
返回值:
python2 返回一个列表
python3 返回一个迭代器
>>> my_list = [1, 5, 4, 6, 8, 11, 3, 12]
>>> new_list = list(filter(lambda x:x%2==0, my_list)) # 筛选出my_list中的所有偶数元素
>>> print(new_list)
[4, 6, 8, 12]
3) reduce() 函数
reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操 作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
语法:
reduce(function, iterable[, initializer])
返回函数计算结果。
在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数。
>>> import functools
>>> result=functools.reduce(lambda x,y:x+y,range(1,101)) # 1-100 数列和
>>> print(result)
5050
阶乘:
>>> result=functools.reduce(lambda x,y:x*y,range(1,6)) # 5! 阶乘
>>> print(result)
120
4) sum() 函数
sum() 方法对序列进行求和计算。
语法:
sum(iterable[, start])
参数
iterable -- 可迭代对象,如:列表、元组、集合。
start -- 指定相加的参数,如果没有设置这个值,默认为0。
返回值
返回计算结果。
>>> my_list = [1, 5, 4, 6, 8, 11, 3, 12]
>>> sum(my_list)
50
5) max(), min() 函数
max() 方法返回给定参数的最大值,参数可以为序列。
min() 方法返回给定参数的最小值,参数可以为序列。
max( x, y, z, .... )
>>> max(-10,10,40)
40
>>> min(-10,10,40)
-10
>>> my_list = [1, 5, 4, 6, 8, 11, 3, 12]
>>> max(my_list)
12
>>> min(my_list)
1
>>> a=[(1,2),(2,3),(3,4)] #比较元组列表
>>> max(a) #按照元组的第一个元素进行比较,如果第一个元素相同,则比较第二个元素
(3, 4)
>>> a=[('a',1),('A',1)]
('a', 1)
6) sorted() 函数
sorted() 函数对所有可迭代的对象进行排序。排序时不影响原数据,产生新的排序数据
sorted(iterable[, cmp[, key[, reverse]]])
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。