python map函数与lambda与zip

zip()函数

描述

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

语法

zip 语法:

zip([iterable, ...])

参数说明:

  • iterabl -- 一个或多个迭代器;

返回值

返回元组列表。

注 python 3返回 迭代器的值

>>> l = ['a', 'b', 'c', 'd', 'e','f']
>>> print(zip(1[:],1[1:]))
Traceback (most recent call last):
  File "<pyshell#24>", line 1, in <module>
    print(zip(1[:],1[1:]))
TypeError: 'int' object is not subscriptable
>>> print(zip(l[:],l[1:]))
<zip object at 0x03E94440>
>>> print(list(zip(l[:],l[1:])))
[('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'e'), ('e', 'f')]
>>> 

实例

以下实例展示了 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 ) ]

有关zip(*)的补充 :利用 * 号操作符,可以将元组解压为列表。{本来里面是一个个的元组,从头开始一个一个的变成列表}

具体例子

map()函数

描述

map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

语法

map() 函数语法:

map(function, iterable, ...)

参数

  • function -- 函数,有两个参数
  • iterable -- 一个或多个序列

返回值

Python 2.x 返回列表。

Python 3.x 返回迭代器。

如何解决:
>>>def square(x) :            # 计算平方数
...     return x ** 2
... 
>>> map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
 
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
>>> list(map(lambda x,y :x+y,[1,3,5,6,7,8],[3,4,5]))
[4, 7, 10]

有关python 3中map迭代器的问题贴在这

https://blog.csdn.net/u010376788/article/details/48230257

lambda表达式

https://eastlakeside.gitbooks.io/interpy-zh/content/Lambdas/

猜你喜欢

转载自blog.csdn.net/qq_28724561/article/details/80444265