内置和递归函数

内置函数,

    python中提供的一些工具,我们可以直接拿过来用,我们知道,在python中有68个内置函数.在之前已经接触过input,print,id,globals,locals等几个函数;

  今天来继续学习一些内置函数,在目前所学的知识中,比较重要的函数,主要有enumerate,lambda,sorted,filter,map,zip,reduce

enumerate,枚举

for i in enumerate():    括号中第一个参数必须是可迭代对象,第二个参数是起始值,可以自己定义,默认为0
    print(i)
for i in enumerate("166",1)
  print(i)
          输出结果为(1,'1'),(2,'6'),(3,'6')

lambda,匿名函数

  匿名函数定义时,没有def,没有函数名,它有形参,可以接收多个形参,查名字可以用:函数.__name__

格式为:  lambda 参数:返回值

f = lambda x:x+x
print(f(3))
                    输出内容为:6
可以直接写:print((lambda x:x+x)(3)),调用时要传参

sorted,排序

print(sorted(可迭代对象))          默认是升序
print(sorted(可迭代对象),reverse=True)  降序

例1:

sorted('可迭代对象',key='函数名',reverse=True)      函数名里写排序的规则,可以指定升序或者降序

lst = ['光年之外','bgm','这个世界太疯狂','accord']
print(sorted(lst,key=lambda x:len(x),reverse=True))
    输出结果为:['这个世界太疯狂','accord','光年之外','bgm']

filter 筛选过滤

  filter('写好过滤规则的函数','可迭代对象')

筛选列表:
lst = [1,2,3,4,5,6] print(list(filter(lambda x:x>3,lst)))      结果为:[4,5,6]
筛选字典:
dic = [{'name':'依依','age':18},{'name':'小五子','age':20}]
print(list(filter(lambda x:x['age']>18,dic)))        结果为:{'name':'小五子',''age':20}

map,映射函数

1,可以快速实现列表内每个元素的基础运算,加,乘...

2,可以快速的将多个可迭代对象,元素位置相同的进行上下累加

lst = [1,2,3,4,5,6]
lst1 = [2,3,4,5,6,7]
print(list(map(lambda x,y:x+y,lst,lst1)))        结果为[3,5,7,9,11,13]

zip函数

  它的返回值是多个,如果是多个可迭代对象,按照最短的进行输出,可以将它戏称为拉链函数

lst = [1,2,3]
lst1= [2,3,4,5,6]
lst2 = [5,6,7,8]
for i in zip(lst,lst1,lst2):
    print(i)                结果为:(1,2,5),(2,3,6),(3,4,7)

reduce,实现累计算

python3中,导入reduce函数:from functools import reduce

lst = [1,2,3,4,5,6]
print(reduce(lambda x,y:x**2,lst))   结果为:120

其他函数:

检测可迭代对象:

  all( ),都为真时,输出True,有一个假就为False

  any( ),有一个真即为True

进制转换:

  bin( ),把参数转化成二进制

  otc( ),把参数转化成八进制

  hex( ),把参数转化成十六进制

和ascii码相关:

  acsii( ),如果括号中元素在ascii码中,就原生显示;如果不在,就返回\u...

  chr( ),对应ascii码,输入位置字符找出对应字符

  ord( ),找带字符位置的编码

和数字运算相关:

  abs( ),求数字的绝对值

  round( ),四舍五入;第一个参数为浮点数,第二个参数为保留的位数

  pow( ),两个参数是求幂运算,三个参数是求幂后再取余

  max( ),求最大值;如果是字典,比较的是键

  min( ),求最小值

  float( ),浮点;

和字节相关:

  memoryview( ),求字节的内存地址

  bytes( ),查字节;第一个参数是要查询的内容,第二个参数是编码集

  bytearray( ),返回一个新字节数组,每个元素的值的范围是0~256对应的是ascii码表;第一个参数放内容,第二个参数是编码集

 

callable( ),判断是否可调用

repr( ),显示数据的原生形态

以下两个函数禁用:

eval( ),它可以执行字符串中的部分内容,容易出问题

exec( ),不论字符串输入什么,都可以运行,更容易出问题

递归
  要满足的条件是:自己调用自己,是一个无止境的递归,必须得有明确的终止条件

def func():
    print("你好")
    func()
func()        会报错,内存溢出

  官方声明递归的最大深度为1000,修改递归最大深度的方式是:sys.setrecursionlimit('修改的数量')

def func(n):
    print(n)
    n += 1
    func(n) 
func(1)        实际测试在996-998之间

  递归主要应用在os模块中,可以递归创建文件夹,也可以删除,也可以查看文件

posted @ 2019-04-11 08:25  DF-包子  阅读(132)  评论(0)    收藏  举报