zip/enumerate/map函数的使用
zip函数
zip函数将多个可迭代对象进行打包,如果可迭代对象的数量不一样,以最少的为准。zip解包也是一个zip类型,需要强制转换为列表或元组类型,强转后的元素为元组类型
例:
打包
# 打包成列表
li1 = ['a', 'b', 'c']
li2 = [1, 2, 3]
res = list(zip(li1, li2))
print(type(res))
print(res)
# 打包成字典
li1 = ['a', 'b', 'c']
li2 = [1, 2, 3]
res = dict(zip(li1, li2))
print(type(res))
print(res)
例2:
解包
# 解包列表
li1 = ['a', 'b', 'c']
li2 = [1, 2, 3]
res = list(zip(li1, li2))
print(type(res))
print(res)
print('下面的结果是解包'.center(50, '*'))
res2 = list(zip(*res))
print(type(res2))
print(type(res2[0])) # 第一个元素
print(res2)
# 解包字典
li1 = ['a', 'b', 'c']
li2 = [1, 2, 3]
res = dict(zip(li1, li2)) # 打包成字典
print(type(res))
print(res)
print('下面的结果是解包'.center(50, '*'))
res2 = list(zip(*res.items())) # 通过items(),将字典变成一个个键值对组成的元组,然后再装换成list
print(type(res2))
print(type(res2[0])) # 第一个元素
print(res2)
enumerate函数
他可以将可迭代对象转换成一个enumerate对象,一般用于取下标,默认从0开始
语法:
enumerate(可迭代对象, 开始位置)
例:
li1 = ['a', 'b', 'c']
for key, val in enumerate(li1, 10): # 默认从0开始,指定从 10 开始
print(key, val)
map函数
遍历一个可迭代对象,将每一个元素传入一个函数进行处理
语法:
map(函数名, 可迭代对象)
例:
li = [3, 4, 9]
def func(x):
return x ** 2
res = list(map(func, li))
print(res)
# 用匿名函数实现
li = [3, 4, 9]
res = list(map(lambda x: x ** 2, li))
print(res)