几个序列操作函数

目录

基础:Python匿名函数, lambda函数

1. map函数

2. reduce函数

3. filter函数

4. zip()函数

5. enumerate()函数

基础:Python匿名函数, lambda函数

f = x+y^3
f = lambda x, y: x + y**3

1. map函数

map函数调用格式: map(func, *iterables), map函数接收到一个函数func和一个列表,把函数func依次作用在列表的每个元素上,得到一个新的列表。

import math
b = map(math.sqrt, [4 for b in range(3)])
print(list(b))

>[2.0, 2.0, 2.0]

2. reduce函数

reduce函数调用格式为: reduce(func, sequence, [,initial]), 其中func是有两个参数的函数,sequence是元组、列表、字典、字符串等可迭代对象,intial是可选的初始值。

reduce的工作过程是 :在迭代sequence的过程中,首先把前两个元素传给函数参数,函数加工后,然后把得到的结果和第三个元素作为两个参数传给函数参数,函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推。如果传入了initial值,那么首先传的就不是sequence的第一个和第二个元素,而是initial值和第一个元素。经过这样的累计计算之后合并序列到一个单一返回值。

计算5!:

from functools import reduce
print(reduce(lambda x, y: x*y, range(1,6))

> 120

3. filter函数

函数调用格式为:filter(func, iterable)。主要作用是通过func对iterable中的元素进行过滤,并返回一个迭代器(iterator),返回使得func为True的元素。

输出20以内3的倍数

print(list(filter(lambda x : x % 3 == 0, range(21))))

> [0, 3, 6, 9, 12, 15,18]

4. zip()函数

zip(列表1,列表2):将多个列表或元组对应位置的元素组合成元组,并返回包含这些元组的zip对象。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。(来源:菜鸟教程)


a = range(1,6)
b = ['A', 'B', 'C', 'D', 'E']
c = zip(a,b)
list(c)

> [(1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E')]

e, f = zip(* c)
print(e, f)

> (1, 2, 3, 4, 5) ('A', 'B', 'C', 'D', 'E')

5. enumerate()函数

enumerate()函数枚举列表、元组或其他可迭代对象的元素(字符串,字典),返回枚举对象,枚举对象中的每个元素是包含下标和元素值的元组。该函数对字符串、字典同样有效。

a = [{'0': 'A'}, {'1': 'B'}, {'2': 'C'}, {'3': 'D'}]
for b in enumerate(a):
    print(b)

> 
(0, {'0': 'A'})
(1, {'1': 'B'})
(2, {'2': 'C'})
(3, {'3': 'D'})
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值