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/