map()函数 lambda函数 zip()函数的使用

map()函数的使用介绍

1,map是python内置函数,会根据提供的函数对指定的序列做映射。
2,python2返回的是一个集合,python3返回的是一个map对象,需要对其进行数据类型的转换。
map()函数的格式是:

map(function,iterable,...)

第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列。
把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。
3,map()函数实例:

del square(x):
    return x ** 2
res = map(square,[1,2,3,4,5])
print(res)
# <map object at 0x0000019920738C88>
print(list(res)) 
# 结果:[1,4,9,16,25]
  • 通过使用lambda匿名函数的方法使用map()函数:
sum = lambda x, y: x+y
res = map(sum(x, y),[1,3,5,7,9],[2,4,6,8,10])
# map(lambda x, y: x+y,[1,3,5,7,9],[2,4,6,8,10])
print(list(res))
# 结果:[3,7,11,15,19]

# 通过lambda函数使返回值是一个元组:
res = map(lambdax, y : (x**y, x+y),[2,4,6],[3,2,1])
print(list(res))
# 结果:[(8,5),(16,6),(6,7)]
  • 当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:
res = map(None, [2,4,6],[3,2,1])
print(list(res))
# 结果:[(2,3),(4,2),(6,1)]
  • 将字符串转换为list:
res = map(int,'1234')
print(list(res))
# 结果:[1,2,3,4]

lambda函数

1,语法:

lambda 参数1, 参数2...: 语句

2,举例

sum = lambda x, y: x+y  # 定义匿名函数
res = sum(2, 3)  # 调用匿名函数 执行结果由执行语句决定
print(res) # 结果是:5

zip()函数

1, 语法:iterable -- 一个或多个迭代器;

zip([iterable, ...])

2,python2直接返回一个列表;在Python3中为了减少内存,返回的是一个zip对象。如需展示列表,需用list()转换。

a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
res = zip(a,b)
print(res)  # <zip object at 0x000001992073FC88>
print(list(res))
# 结果打包为元组的列表 [(1, 4), (2, 5), (3, 6)]
res2 = zip(a,c)
print(list(res2))
# 元素个数与最短的列表一致 [(1, 4), (2, 5), (3, 6)]
res3 = zip(*res)  # 与zip相反,*res可理解为解压,返回二维矩阵式
print(list(res3)) # [(1, 2, 3), (4, 5, 6)]
原文地址:https://www.cnblogs.com/We612/p/12251411.html