十一 、python 匿名函数与常用的内置函数

匿名函数

lambda函数是一种快速定义单元的最小函数,可以用在任何需要函数的地方。
例如:
使用正常函数

In [6]: def fun(x,y):
   ...:     return x*y
   ...:
In [7]: fun(3,5)
Out[7]: 15

使用匿名函数,其中x,y后面的冒号是表示return的意思

In [9]: r=lambda x,y:x*y

In [10]: r(3,5)
Out[10]: 15

lambda匿名函数的优点:
1、可以省去定义函数的过程,让代码更加精简。
2、对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题
3.某些地方使用lmbda可以让代码更容易理解

lambda基础:

lambda语句中,冒号前是参数,可以有多个,逗号隔开,冒号右边是返回值。
lambda语句构建的其实是一个函数对象

lambda使用

In [12]: r=lambda x,y:x*y

In [13]: r(3,5)
Out[13]: 15

使用函数可以用到reduce函数:
reduce需要2个参数,第一个是函数,第二个是实际参数
使用正常函数:

In [15]: def add(x,y):
   ....:     return x+y
   ....:
In [16]: reduce(add,range(1,101))
Out[16]: 5050

使用匿名函数:

In [18]: reduce(lambda x,y:x+y,range(1,101))
Out[18]: 5050

常用的内建函数

取绝对值:abs

In [20]: abs(2)
Out[20]: 2
In [21]: abs(-2)
Out[21]: 2

取最大值和最小值:max min

In [22]: max([1,2,3])
Out[22]: 3
In [23]: min([1,2,3])
Out[23]: 1

可以比较可迭代对象

In [24]: max('abc','123a',11)
Out[24]: 'abc'

取字符长度:len()
得商取余的函数:divmod()

   In [26]: divmod(5,2)   #5除2 等于2余1
   Out[26]: (2, 1)

函数:pow() ,2个参数时,代表几次方,3个参数代表先去方数,然后取余数

In [29]: pow(2,3)
Out[29]: 8
#2**3/3
In [30]: pow(2,3,3)
Out[30]: 2

四舍五入函数:round()

In [8]: round(12.5)
Out[8]: 13.0

第二个参数代表保留几个小数
In [36]: round(12.52124,2)
Out[36]: 12.52

判断一个对象是否可调用:callable() 返回是一个布尔值

判断一个对象类型:type()

判断是否是一个对象类型:isinstance()
In [42]: l=[1,2]
In [43]: isinstance(l,list)
Out[43]: True
In [14]: a=‘123’
In [15]: isinstance(a,str)
Out[15]: True

比较大小函数,前面比后面大就返回1,反之为-1,等于为0
In [44]: cmp(11,1)
Out[44]: 1
如果比较字符串的话,是看首字母在前还是在后
比如 z开头的字母就比h开头的字母大

返回数字列表:range(),返回对象:xrange()

In [49]: range(10)
Out[49]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

类型转换函数

转成整数类型:int()
转成长整型:long()
转成浮点型:float()
转化为复数:complex
转成字符串:str()
转成列表:list()
In [52]: list(‘123’)
Out[52]: [‘1’, ‘2’, ‘3’]
转成元组:tuple()
In [53]: tuple(‘123’)
Out[53]: (‘1’, ‘2’, ‘3’)
转成16进制的字符串:
hex() 参数只能是整数
将16进制或者字符串当成有效表达式求值:
eval() 参数只能是字符串
In [9]: eval("[‘a’,‘b’,‘c’]")
Out[9]: [‘a’, ‘b’, ‘c’]

转成8进制的字符串:oct()
转成阿斯克码字符:chr() 输入数字在0到255之间
ord() 函数跟chr()函数相反

字符串处理函数

将对象的字符串首字母转化为大写 a.capitalize()

In [60]: a='hello'
In [62]: a.capitalize()
Out[62]: 'Hello'

字符串对象替换 a.replace()

In [64]: a.replace('h','H')
Out[64]: 'Hello
In [68]: b='hello,h'
替换2个h
In [69]: b.replace('h','H',2)
Out[69]: 'Hello,H'
替换1个h
In [70]: b.replace('h','H',1)
Out[70]: 'Hello,h'

将字符串切分成列表:a.split()
默认按空格切分

In [10]: a.split()
Out[10]: ['hello,h']

用 .来切分字符

In [11]: b='192.168.1.204'
In [13]: b.split('.')
Out[13]: ['192', '168', '1', '204']

用.来切分,并且只切分一次

In [14]: b.split('.',1)
Out[14]: ['192', '168.1.204']

连接可迭代函数:join()
#通过abc去连接字符串

In [15]: s1='abc'
In [16]: s1.join('12')
Out[16]: '1abc2'
In [17]: s1.join('123')
Out[17]: '1abc2abc3'
In [18]: s1.join('1234')
Out[18]: '1abc2abc3abc4'

以‘-’为连接符

In [20]: '-'.join([str(i) for i in range(10)])
Out[20]: '0-1-2-3-4-5-6-7-8-9'

string 模块:
import string
打印所有小写:
In [33]: string.lowercase
Out[33]: ‘abcdefghijklmnopqrstuvwxyz’
打印所有大写:
In [34]: string.uppercase
Out[34]: ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’

序列处理函数:

len(),max(),min(),filter(),zip(),map(),reduce()

过滤函数:filter()
None就是什么都不做的意思,下面就是不对’abc‘做任何处理

In [40]: filter(None,'abc')
Out[40]: 'abc'

In [26]: def f(x):
    if x % 2 ==0:
       return True

余数为0的就打印,初步过滤

In [27]: filter(f,range(10))
Out[27]: [0, 2, 4, 6, 8]

也可以利用匿名函数处理

In [54]: filter(lambda x:x%2==0, range(1,10))
Out[54]: [2, 4, 6, 8]

处理多个序列,整合成一个大序列:zip()

In [28]: l1=[1,2,3]
In [30]: l2=['a','b','c']
In [31]: zip(l1,l2)
Out[31]: [(1, 'a'), (2, 'b'), (3, 'c')]

map()方法传入函数或者None
没有数据的时候就填充None

In [41]: map(None,l1,l2,l3)
Out[41]: [(1, 'a', 3), (2, 'b', 5), (3, 'c', None)]

传入乘方的函数

In [45]: l1
Out[45]: [1, 2, 3]	
In [42]: def f(x):
   ....:     return x**2
In [44]: map(f,l1)
Out[44]: [1, 4, 9]

传入相乘的函数

In [48]: l2=[4,5,6]
In [46]: def f(x,y):
   ....:     return x*y
In [49]: map(f,l1,l2)
Out[49]: [4, 10, 18]

对序列值的值做处理 :reduce()

In [52]: def fun(x,y):
    return x+y
   ....:
In [53]: reduce(fun,range(1,101))
Out[53]: 5050

使用lambda匿名函数:

In [54]: filter(lambda x:x%2 ==0,range(10))
Out[54]: [0, 2, 4, 6, 8]

列表表达式:
这样可以将for循环的数据进行修改,列表重写.

In [57]: [i for i in range(10)]
Out[57]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [58]: [i for i in range(10) if i%3==0]
Out[58]: [0, 3, 6, 9]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值