Python中的map,filter,sort,reduce,zip内置函数

xiaoxiao2021-02-28  44

Filter

def is_odd(n): return n % 2 == 1 newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) print(newlist)

如果使用lambda表达式:

x=range(1,10) newlist = filter(lambda x:x%2==1,x)

Map

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]

由于 lambda 中的 z 参数实际是使用了 listz, 而 listz 里面只有 4 个元素, 所以即使 listx 有 7 个元素, listy 有 6 个元素,也不会继续执行了,只执行了 4 个元素的的计算。

Sorted

def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0 sorted([36, 5, 12, 9, 21], reversed_cmp) ##[36, 21, 12, 9, 5]

Reduce

def add(x, y) : # 两数相加 return x + y reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5 reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数

Zip

a = [1,2,3] b = [4,5,6] c = [4,5,6,7,8] zipped = zip(a,b) # 打包为元组的列表 ##[(1, 4), (2, 5), (3, 6)] zip(a,c) # 元素个数与最短的列表一致 ##[(1, 4), (2, 5), (3, 6)] zip(*zipped) # 与 zip 相反,可理解为解压,返回二维矩阵式 ##[(1, 2, 3), (4, 5, 6)]
转载请注明原文地址: https://www.6miu.com/read-2631760.html

最新回复(0)