map他不但可以进行并行遍历,还可以做一些并行的操作,比如我们下面的乘法运算
>>> a=[1,3,5]
>>> b=[2,4,6]
>>> def mf(x,y):
... return x*y
...
>>> map(None,a,b)
[(1, 2), (3, 4), (5, 6)]
>>> map(mf,a,b)
[2, 12, 30]
>>> l=range(1,101) 下面我们定义一个1-100的序列
>>> l
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
>>> def rf(x,y):
... return x+y
...
>>> reduce(rf,l) 使用reduce对其进行递归求和操作
5050
>>> reduce(lambda x,y:x+y,l) 这里我们使用了lambda这个匿名函数
5050
>>> filter(lambda x:x%2 == 0,l) 使用filter过滤出所有的偶数
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]
>>> foo=[2,18,9,22,17,24,8,12,27]
>>> print filter(lambda x:x%3 == 0,foo)
[18, 9, 24, 12, 27]
>>> print map(lambda x:x*2+10,foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
map的例子,可以写成:
>>> print [x*2+10 for x in foo]
[14, 46, 28, 54, 44, 58, 26, 34, 64]
非常简洁,易懂。filter的例子可以写成:
>>> print [x for x in foo if x%3 ==0]
[18, 9, 24, 12, 27]
1)模块是python组织代码的基本方式。
2)python的脚本都是用扩展名为py的文本文件保存的,一个脚本可以单独运行,也可以导入另一个脚本中运行。当脚本被导入运行时,我们将其称为模块(module)。
3)模块名与脚本的文件名相同
- 例如我们编写了一个名为items.py的脚本,则可在另外一个脚本中用import Iterms语句来导入它。
4)python的模块可以按目录组织为包
5)创建一个包的步骤是:
- 建立一个名字为名字的文件夹,
- 在该文件夹下创建一个__init__.py文件,
- 根据需要在该文件夹下存放脚本文件、已编译扩展及子包。
- import pack.m1,pack.m2,pack.m3
下面我们使用导入包的操作:
hy@hy:~/Documents/py$ cat cal.py
#!/usr/bin/python
#coding:utf-8
from __future__ import division
def add(x,y):
return x+y
def jian(x,y):
return x-y
def cheng(x,y):
return x*y
def chu(x,y):
return x/y
def operator(x,o,y):
if o == "+":
print add(x,y)
elif o == "-":
print jian(x,y)
elif o == "*":
print cheng(x,y)
elif o == "/":
print chu(x,y)
else:
pass
operator(2,‘/‘,4)
hy@hy:~/Documents/py$ python cal.py
0.5
hy@hy:~/Documents/py$ cat new.py 在new.py这个文件中我们导入之前定义的cal.py这个包
import cal
hy@hy:~/Documents/py$ python new.py 在执行他的时候可以达到同样的效果
0.5
如果我们想要调用cal这个模块中的一个函数,我们可以使用一下方法:
new.py
1 import cal
2
3 cal.add(1,2)
hy@hy:~/Documents/py$ cat new.py 我们还可以将这个值打印出来
import cal
a = cal.add(1,2)
print a
hy@hy:~/Documents/py$ python new.py
0.5
3
hy@hy:~/Documents$ ls 我们要将多个文件存在的目录当成一个包,在包内添加__init__.py
py 这里我们是指py这个包
hy@hy:~/Documents$ cat test.py 我们还需要在这个包的外面加入这个包所对应的模块
import py.cal
print py.cal.add(1,2)
hy@hy:~/Documents$ python test.py
0.5
3
hy@hy:~/Documents/py$ python
>>> from cal import add
>>> add(2,3)
5
总结:
1)模块是一个可以导入的python脚本文件;
2)包是一堆按目录组织的模块和子包,目录下的__init__.py文件存放了包的信息;
3)可以用import,import as,from import等语句导入模块和包。