码迷,mamicode.com
首页 > 编程语言 > 详细

循序渐进Python3(三) -- 3 -- 内置函数

时间:2016-08-07 15:22:03      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

上一篇我们又介绍了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
>>> s1={1,2,3,1}
>>> print(s1)
{123}

 由此可见set不包含重复数据。

1
2
3
4
5
6
>>> s2=set([2,5,6])
>>> print(s2)
{256}
>>> s2=set((2,5,6))
>>> print(s2)
{256}

 由此可见set能够将可迭代的数据类型转为集合。

 
1
2
3
>>> s1.add(5)
>>> print(s1)
{1235}

添加一个元素。

1
2
3
>>> s3=s1.difference(s2)
>>> print(s3)
{13}

 返回s1中存在而不存在于s2的集合。

1
2
3
>>> s1.difference_update(s2)
>>> print(s1)
{13}

 将s1中存在而s2不存在的数据,存放到s1中,s1数据被改变。

1
2
3
>>> s1.discard(1)
>>> print(s1)
{3}

 删除集合s1中的元素 1,不存在的话不报错 。

1
2
3
4
5
6
7
>>> s1.remove(3)
>>> print(s1)
set()
>>> s1.remove(3)
Traceback (most recent call last):
  File "<stdin>", line 1in <module>
KeyError: 3

删除集合s1中的元素 3,不存在的话报错。

1
2
3
4
5
6
>>> s1.update([11,2,3])
>>> print(s1)
{2311}
>>> s1.update([11,2,4])
>>> print(s1)
{23411}

 

 更新s1中的元素,其实是添加 。

1
2
3
>>> k=s1.pop()
>>> print(s1)
{3411}<br>>>> print (k)<br>2

 删除一个元素,并将删除的元素返回给一个变量,无序的,所以并不知道删除谁。

1
2
3
4
5
>>> s1={1,2,3,4}
>>> s2={3,4,5,6}
>>> r1=s1.intersection(s2)
>>> print(r1)
{34}

 取交集,并将结果返回给一个新的集合。

1
2
3
4
5
>>> print(s1)
{1234}
>>> s1.intersection_update(s2)
>>> print(s1)
{34}

 取交集,并将s1更新为取交集后的结果。

1
2
3
>>> k1=s1.issubset(s2)
>>> print(k1)
True

 s1是否是s2的的子集是的话返回True,否则False 这里k1=True  。

1
2
3
>>> k2=s1.issuperset(s2)
>>> print(k2)
False

 s1是否是s2的父集 k2=False    。

1
2
3
>>> k3=s2.isdisjoint(s1)
>>> print(k3)
False

 s1,s2,是否有交集,有的话返回False,没有的话返回True  。

1
2
3
4
5
6
7
>>> print(s1)
{1234}
>>> print(s2)
{3456}<br>
>>> r3=s1.union(s2)
>>> print(r3)
{123456}

 取并集将结果返回给r3 。

1
2
3
>>> r2=s1.symmetric_difference(s2)
>>> print(r2)
{1256}

 r2=s1并s2-s1交s2   ,即把两个集合共有的元素去掉。

1
2
3
>>> s1.symmetric_difference_update(s2)
>>> print(s1)
{1256}

 将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

循序渐进Python3(三) -- 3 -- 内置函数

标签:

原文地址:http://www.cnblogs.com/wumingxiaoyao/p/5746075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!