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

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)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值