上一篇我们又介绍了26个Python内置函数。现回忆一下吧:
1.all
2.any
3.ascii
4.bin
5.bool
6.bytes
7.bytearray
8.callable
9.chr
10.compile
11.complex
12.dir
13.divmod
14.enumerate
15.eval
16.exec
17.format
18.frozenset
19.globals
20.locals
21.hash
22.hex
23.id
24.iter
25.oct
26.zip
有没有感觉很陌生的?
下面再来看看其他的函数:
1.filter
filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:
def is_odd(x): return x % 2 == 1
然后,利用filter()过滤掉偶数:
filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
结果:[1, 7, 9, 17]
利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:
def is_not_empty(s): return s and len(s.strip()) > 0 filter(is_not_empty, [‘test‘, None, ‘‘, ‘str‘, ‘ ‘, ‘END‘])
结果:[‘test‘, ‘str‘, ‘END‘]
注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
当rm为空时,默认删除空白符(包括‘\n‘, ‘\r‘, ‘\t‘, ‘ ‘),如下:
a = ‘ 123‘ a.strip()
结果: ‘123‘
a=‘\t\t123\r\n‘ a.strip()
结果:‘123‘
2.map()函数
map()函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果希望把list的每个元素都作平方,就可以用map()函数:
因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:
def f(x): return x*x print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
输出结果:
[1, 4, 9, 10, 25, 36, 49, 64, 81]
注意:map()函数不改变原有的 list,而是返回一个新的 list。
利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。
可以在后面放多个列表
>>> def sqr(x):
... return x*x
...
>>> print map(sqr,a)
[1, 4, 9, 16, 25]
>>> def uin(y):
... return y+y
...
>>> print map(uin,(a,b))
[[1, 2, 3, 4, 5, 1, 2, 3, 4, 5], [5, 6, 7, 8, 5, 6, 7, 8]]
3、set
set是一个无序而且不重复的集合,有些类似于数学中的集合,也可以求交集,求并集等,下面从代码里来看一下set的用法,如果对这些用法不太熟悉的话,可以照着下面的代码敲一遍。
1 2 3 |
|
由此可见set不包含重复数据。
1 2 3 4 5 6 |
|
由此可见set能够将可迭代的数据类型转为集合。
1 2 3 |
|
添加一个元素。
1 2 3 |
|
返回s1中存在而不存在于s2的集合。
1 2 3 |
|
将s1中存在而s2不存在的数据,存放到s1中,s1数据被改变。
1 2 3 |
|
删除集合s1中的元素 1,不存在的话不报错 。
1 2 3 4 5 6 7 |
|
删除集合s1中的元素 3,不存在的话报错。
1 2 3 4 5 6 |
|
更新s1中的元素,其实是添加 。
1 2 3 |
|
删除一个元素,并将删除的元素返回给一个变量,无序的,所以并不知道删除谁。
1 2 3 4 5 |
|
取交集,并将结果返回给一个新的集合。
1 2 3 4 5 |
|
取交集,并将s1更新为取交集后的结果。
1 2 3 |
|
s1是否是s2的的子集是的话返回True,否则False 这里k1=True 。
1 2 3 |
|
s1是否是s2的父集 k2=False 。
1 2 3 |
|
s1,s2,是否有交集,有的话返回False,没有的话返回True 。
1 2 3 4 5 6 7 |
|
取并集将结果返回给r3 。
1 2 3 |
|
r2=s1并s2-s1交s2 ,即把两个集合共有的元素去掉。
1 2 3 |
|
将s1更新为 s1并s2 - s1交s2 。
4、open
用于打开文件。
打开文件的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,无意义
- a+,同a
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb
- wb
- ab
eg.
f = open(‘ha.ini.bak‘, ‘w‘) # 以只写模式打开文件f.close() # 关闭文件
with open(‘ha.ini‘) as fy, open(‘ha.ini.bak‘, ‘w‘) as fb: # with 模式打开文件,可以打开多个,也不用关心关闭的问题。 for i in fy: pass