1.map()函数!
- 系统内置函数。
- 格式 map(function,iterable…)
参数1: function,函数,参数的个数与后面序列的个数保持一致!
参数2: iterable,一个或多个序列。
功能:将传入的函数依次作用于序列中的每一个元素,并把结果作为迭代器返回。
重点:经测试,一点要求:正常情况序列的个数必须要等于函数参数的个数!
特殊情况:序列中有‘空’时,结果为空!(此时并不判断是否参数个数和序列个数一致!)
测试过程:
def add(x, y, z):
return x+y+z
a = map(add, [1,1,1], [2,2,2], [3,3,3])
print(list(a))
结果:[6,6,6]
a = map(add, [1,1,1], [2,2,2], [3,3,3], [4,4,4])
结果:TypeError: add() takes 3 positional arguments but 4 were given实参多了
a = map(add, [1,1,1],[2,2,2]) # 序列个数小于参数个数
结果:TypeError: add() missing 1 required positional argument: 'z'确少实参z
a = map(add, [1,1,1], [2,2,2], [3]) # 列表长度不一样,以短的为主计算
结果:[6]
a = map(add, [1,1,1], []) # 存在空时,无论几个序列最终结果都为空!!
a = map(add, [1],[2],[3],[4],[])
结果都是:[]
用法总结:
-
序列有空:判断序列中是否有为空的情况,有空时,结果必为空
-
序列无空:函数参数个数与序列的个数保持一致!
留意:取字典的键值
gen3 = map(lambda x:int(x),{‘1’:10,‘2’:20})
print(list(gen3)) #[1,2]
2.reduce函数
- functools模块函数 from functools import reduce
- 格式 reduce(f, iterable[, initializer])
参数1:f 函数,这个函数必须两个参数
参数2:可迭代对象
参数3:可选, 是默认值,序列为空时,则使用默认值
返回值:f 函数计算的结果值
功能:可以对可迭代对象进行过滤,去除不满足条件的元素
将列表转换成整数
print(reduce(lambda x, y: x+y, [1, 2, 5, 7])) #1257
print(reduce(lambda x, y: x+y, [], 6)) #6 当传入[]空,使用默认值
3.filter
-
内置函数
-
格式:filter(function, iterable)
参数1:function 函数,迭代器元素传入,为真的保留,为假的去除
参数2:iterable可迭代对象
返回值: 一个新的迭代器或迭代对象!
功能:对可迭代元素起到过滤作用!a = filter(lambda x: isinstance(x, str), [1, 3, 5, ‘asd’, 5])
print(next(a)) 去除列表中的非字符串数据
等价于[s for s in [1, 3, 5, ‘and’, 5] if isinstance(s, str)]
判断回文数:
def is_palindorme(n):
l1 = list(str(n)) # 数字转换成字符串列表
l2 = l1[::-1]
if l1 == l2:
return True
return False
4. sorted
- sorted是内建函数,用于对有序序列进行排序,生成一个新序列
- 格式: sorted(iterable[, key] [, reverse] )
参数:iterable 要排序的对象, 可迭代
key 是一个函数,作用于序列的每个元素,根据函数返回值排序。
函数的参数就取自于可迭代对象中。
reverse 默认从小到大排序,为Ture则从大到小排序!
返回值:新的序列