目录
1 map()函数
map()
函数语法:map(function,iterable)
-
参数:
-
function:函数
-
iterable:一个或多个序列
-
-
返回值:迭代器对象
作用:map()是 Python 内置的高阶函数,它接收一个函数 function
和一个 iterable
,并通过把函数 function
依次作用在 iterable
的每个元素上,并返回一个新的迭代器;map()函数也可以接收多个iterable
。
# 传入一个序列的例子
def f(x):
return x*x
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in map(f, list1):
print(i)
# 传入多个序列的例子
def f(x, y):
return x*y
list1 = [1, 2, 3]
list2 = [4, 5, 6]
for i in map(f, list1, list2):
print(i, end="\t")
注意:map()函数不改变原有的迭代器,而是返回一个新的迭代器。
2 reduce()函数
reduce()函数语法:reduce(function, iterable[, initializer])
-
参数:
-
function:函数
-
iterable:可迭代对象
-
initializer:可选,初始参数
-
-
返回值:返回函数计算结果
作用:reduce()
函数也是Python内置的一个高阶函数,reduce()
函数接收的参数和 map()
类似,一个函数 function
,一个iterable
,但行为和 map()
不同,reduce()函数的作用是用传给 reduce 中的function函数先对iterable
中的第 1、2 个元素进行运算,得到的结果再与第3个数据用 function 函数运算,最后返回运算的结果。
Python3.x reduce() 已经被移到 functools 模块里,如果我们要使用,需要引入 functools 模块来调用 reduce() 函数:
from functools import reduce
举例:
def add(x, y):
print("x=%d,y=%d" % (x, y))
return x + y
sum1 = reduce(add, [1,2,3,4,5]) # 相当于计算1+2+3+4+5,得到15
print(sum1)
# reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为1000
sum2 = reduce(add, [1,2,3,4,5], 1000) # 相当于计算1000+1+2+3+4+5,得到1015
print(sum2)
3 filter()函数
filter()函数语法:filter(function, iterable)
-
参数:
-
function:判断函数
-
iterable:可迭代对象
-
-
返回值:迭代器
作用:filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新的迭代器对象中。
举例:
# 判断n是不是偶数
def is_odd(n):
return n%2 == 0
odd = filter(is_odd, [1,2,3,4,5,100])
print(list(odd))
4 sorted()函数
sorted函数语法:sorted(iterable, reverse=False)
-
参数说明:
-
iterable -- 可迭代对象。
-
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
-
-
返回值:返回重新排序的列表。
作用:sorted() 函数对所有可迭代的对象进行排序操作。
面试常问题:sorted()函数与sort()方法的区别?
-
sort()方法是应用在list对象上的方法,sorted()函数可以对所有可迭代的对象进行排序操作;
-
list对象的sort()方法是对已经存在的列表进行操作,没有返回值,而sorted()函数返回的是一个新的list对象,而不是在原来的基础上进行的操作。
举例:
list1 = [5, 7, 6, 3, 4, 1, 2]
list2 = sorted(list1)
print(list1) # 原来的列表顺序不变
print(list2) # 新生成了一个列表