一、内置函数补充:

   1、数据结构相关(24):

    列表和元祖(2):list、tuple

      list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素)。

      tuple:将一个可迭代对象转换成元祖(如果是字典,默认将key作为元祖的元素)。

  1. l = list((1,2,3))
  2. print(l)
  3.  
  4. l = list({1,2,3})
  5. print(l)
  6.  
  7. l = list({'k1':1,'k2':2})
  8. print(l)
  9.  
  10. tu = tuple((1,2,3))
  11. print(tu)
  12.  
  13. tu = tuple([1,2,3])
  14. print(tu)
  15.  
  16. tu = tuple({'k1':1,'k2':2})
  17. print(tu)

元祖与列表

    相关内置函数(2):reversed、slice

    *****  reversed:将一个序列翻转,并返回此翻转序列的迭代器。  

    ***  slice:构造一个切片对象,用于列表的切片。  

  1. ite = reversed(['a',2,3,'c',4,2])
  2. for i in ite:
  3. print(i)
  4.  
  5. li = ['a','b','c','d','e','f','g']
  6. sli_obj = slice(3) #按个数切
  7. print(li[sli_obj])
  8.  
  9. sli_obj = slice(0,7,2) #加步长切
  10. print(li[sli_obj])

翻转与列表切片

    字符串相关(9):str、format、bytes、bytearry、memoryview、ord、chr、ascii、repr

      str:将数据转换成字符串。

    **  format:与具体数据相关,用于计算各种小数,精算等。

  1. #字符串可以提供的参数,指定对齐方式,<是左对齐, >是右对齐,^是居中对齐
  2. print(format('test', '<20'))
  3. print(format('test', '>20'))
  4. print(format('test', '^20'))
  5.  
  6. #整形数值可以提供的参数有 'b' 'c' 'd' 'o' 'x' 'X' 'n' None
  7. >>> format(3,'b') #转换成二进制
  8. ''
  9. >>> format(97,'c') #转换unicode成字符
  10. 'a'
  11. >>> format(11,'d') #转换成10进制
  12. ''
  13. >>> format(11,'o') #转换成8进制
  14. ''
  15. >>> format(11,'x') #转换成16进制 小写字母表示
  16. 'b'
  17. >>> format(11,'X') #转换成16进制 大写字母表示
  18. 'B'
  19. >>> format(11,'n') #和d一样
  20. ''
  21. >>> format(11) #默认和d一样
  22. ''
  23.  
  24. #浮点数可以提供的参数有 'e' 'E' 'f' 'F' 'g' 'G' 'n' '%' None
  25. >>> format(314159267,'e') #科学计数法,默认保留6位小数
  26. '3.141593e+08'
  27. >>> format(314159267,'0.2e') #科学计数法,指定保留2位小数
  28. '3.14e+08'
  29. >>> format(314159267,'0.2E') #科学计数法,指定保留2位小数,采用大写E表示
  30. '3.14E+08'
  31. >>> format(314159267,'f') #小数点计数法,默认保留6位小数
  32. '314159267.000000'
  33. >>> format(3.14159267000,'f') #小数点计数法,默认保留6位小数
  34. '3.141593'
  35. >>> format(3.14159267000,'0.8f') #小数点计数法,指定保留8位小数
  36. '3.14159267'
  37. >>> format(3.14159267000,'0.10f') #小数点计数法,指定保留10位小数
  38. '3.1415926700'
  39. >>> format(3.14e+1000000,'F') #小数点计数法,无穷大转换成大小字母
  40. 'INF'
  41.  
  42. #g的格式化比较特殊,假设p为格式中指定的保留小数位数,先尝试采用科学计数法格式化,得到幂指数exp,如果-4<=exp<p,则采用小数计数法,并保留p-1-exp位小数,否则按小数计数法计数,并按p-1保留小数位数
  43. >>> format(0.00003141566,'.1g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留0位小数点
  44. '3e-05'
  45. >>> format(0.00003141566,'.2g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留1位小数点
  46. '3.1e-05'
  47. >>> format(0.00003141566,'.3g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留2位小数点
  48. '3.14e-05'
  49. >>> format(0.00003141566,'.3G') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留0位小数点,E使用大写
  50. '3.14E-05'
  51. >>> format(3.1415926777,'.1g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留0位小数点
  52. ''
  53. >>> format(3.1415926777,'.2g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留1位小数点
  54. '3.1'
  55. >>> format(3.1415926777,'.3g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留2位小数点
  56. '3.14'
  57. >>> format(0.00003141566,'.1n') #和g相同
  58. '3e-05'
  59. >>> format(0.00003141566,'.3n') #和g相同
  60. '3.14e-05'
  61. >>> format(0.00003141566) #和g相同
  62. '3.141566e-05'

str与format

    ****  bytes:用于不同编码之间的转化。

  1. s = '你好'
  2. bs = s.encode('utf-8')
  3. print(bs)
  4. s1 = bs.decode('utf-8')
  5. print(s1)
  6.  
  7. b1 = bytes(s,encoding='utf-8')
  8. print(b1)
  9. s2 = b1.decode('utf-8')
  10. print(s2)
  11.  
  12. b2 = '你好'.encode('gbk')
  13. b3 = b2.decode('gbk')
  14. print(b3.encode('utf-8'))

编码转化

      bytearry:返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围:0 <= x < 256

  1. ret = bytearray('alex',encoding='utf-8')
  2. print(id(ret))
  3. print(ret)
  4. print(ret[0])
  5. ret[0] = 65
  6. print(ret)
  7. print(id(ret))

bytearry

      memoryview:

  1. ret = memoryview(bytes('你好',encoding='utf-8'))
  2. print(len(ret))
  3. print(ret)
  4. print(bytes(ret[:3]).decode('utf-8')) #你
  5. print(bytes(ret[3:]).decode('utf-8')) #好

memoryview

    **  ord:输入字符找该字符编码的位置

    **  chr:输入位置数字找出其对应的字符

    **  ascii:是ascii码中的返回该值,不是就返回 /u 它在unicode的位置(16进制)

  1. # ord 输入字符找该字符编码的位置
  2. print(ord('a'))
  3. print(ord('中'))
  4.  
  5. # chr 输入位置数字找出其对应的字符
  6. print(chr(97))
  7. print(chr(20013))
  8.  
  9. # 是ascii码中的返回该值,不是就返回/u...
  10. print(ascii('a'))
  11. print(ascii('中'))

ord、chr、ascii

    *****  repr:返回一个对象的string形式(原形毕露)。

  1. # %r 原封不动的写出来
  2. # name = 'taibai'
  3. # print('我叫%r'%name)
  4. print("我叫'%s'" % name) #用双引号把单引号引起来也可以
  5.  
  6. # repr 原形毕露
  7. print(repr('{"name":"alex"}'))
  8. print('{"name":"alex"}')

repr

    数据集合(3):

      dict:创建一个字典。

      set:创建一个集合。

      frozenset:返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

    相关内置函数(8):

      len:返回一个对象中元素的个数。

    *****  sorted:对所有课迭代的对象进行排序操作。

  1. l = [('a',1),('c',3),('d',4),('b',2)]
  2. l1 = sorted(l,key=lambda x: x[1]) # 利用key
  3. print(l1)
  4. # 结果:[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
  5.  
  6. students = [('john','A',15),('jane','B',12),('dave','B',10)]
  7. l2 = sorted(students,key=lambda s: s[2]) # 按年龄排序
  8. print(l2)
  9. # 结果:[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
  10.  
  11. l3 = sorted(students,key=lambda s: s[2], reverse=True) # 按降序
  12. print(l3)
  13. # 结果:[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

排序sorted

      enumerate:枚举,返回一个枚举对象。

  1. print(enumerate([1,2,3,4]))
  2. for i in enumerate([1,2,3,4,5]): # (索引 + 值)
  3. print(i)
  4.  
  5. for i in enumerate([1,2,3],100): #(索引从100开始 + 值)
  6. print(i)

enumerate

    ***  all:可迭代对象中,全都是True才是Ture

    ***  any:可迭代对象中,有一个True就是True

  1. # all 可迭代对象中,全都是True才是True
  2. # any 可迭代对象中,有一个True 就是True
  3. # print(all([1,2,True,0]))
  4. # print(any([1,'',0]))

all与any

    *****  zip:函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元祖,然后返回由这些元祖组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

        拉链方法:将多个iter纵向组成一个个元祖。

  1. l1 = [1,2,3,4]
  2. l2 = ['a','b','c',5]
  3. l3 = ('*','**',(1,2,3,4))
  4. print(zip(l1,l2,l3))
  5.  
  6. for i in zip(l1,l2,l3):
  7. print(i)
  8.  
  9. # 结果:
  10. # <zip object at 0x00A86558>
  11. # (1, 'a', '*')
  12. # (2, 'b', '**')
  13. # (3, 'c', (1, 2, 3, 4))

zip

    *****  filter:过滤。

  1. #filter 过滤 通过你的函数,过滤一个可迭代对象,返回的是True
  2. #类似于[i for i in range(10) if i > 3]
  3. # def func(x):return x%2 == 0
  4. # ret = filter(func,[1,2,3,4,5,6,7])
  5. # print(ret)
  6. # for i in ret:
  7. # print(i)
  8. # print(list(filter(func,[1,2,3,4,5,6,7])))

过滤,filter

    *****  map:会根据提供的函数对指定序列做映射。

  1. >>>def square(x) : # 计算平方数
  2. ... return x ** 2
  3. ...
  4. >>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
  5. [1, 4, 9, 16, 25]
  6. >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
  7. [1, 4, 9, 16, 25]
  8.  
  9. # 提供了两个列表,对相同位置的列表数据进行相加
  10. >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
  11. [3, 7, 11, 15, 19]

映射,map

二、匿名函数:

   为了解决那些功能很简单的需求而设计的 一句话 函数。

    匿名函数的调用和正常的调用一样,函数名(参数)就可以了

  1. #这段代码
  2. def calc(n):
  3. return n**n
  4. print(calc(10))
  5.  
  6. #换成匿名函数
  7. calc = lambda n:n**n
  8. print(calc(10))

  1. 函数名 = lambda 参数 :返回值
  2.  
  3. #参数可以有多个,用逗号隔开
  4. #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
  5. #返回值和正常的函数一样可以是任意数据类型
  1. l=[3,2,100,999,213,1111,31121,333]
  2. print(max(l))
  3.  
  4. dic={'k1':10,'k2':100,'k3':30}
  5.  
  6. print(max(dic))
  7. print(dic[max(dic,key=lambda k:dic[k])])
  8.  
  9. res = map(lambda x:x**2,[1,5,7,4,8])
  10. for i in res:
  11. print(i)
  12.  
  13. res = filter(lambda x:x>10,[5,8,11,9,15])
  14. for i in res:
  15. print(i)

匿名函数举例

三、递归初识:

   递归就是在函数中调用函数自己,递归的最大深度是998层。

   每一次函数调用都会产生一个属于它自己的名称空间,如果一直调用下去,就会造成名称空间占用太多内存的问题,于是python为了杜绝此类现象,强制的将递归层数控制在了997

  1. def foo(n):
  2. print(n)
  3. n += 1
  4. foo(n)
  5. foo(1)

   997是python为了我们程序的内存优化所设定的一个默认值,我们当然还可以通过一些手段去修改它:

    (至于实际可以达到的深度就取决于计算机的性能了)

  1. import sys
  2. sys.setrecursionlimit(100000) # 把默认值改成10W
  3. def func(x):
  4. print(x)
  5. x += 1
  6. func(x)
  7. func(1)
  1. '''
  2. alex 比 wusir 大两岁 n = 4
  3. wusir 比日天 大两岁 n = 3
  4. 日天 比太白 大两岁 n = 2
  5. 太白 24岁 n = 1
  6.  
  7. age(4) = age(3) + 2
  8. age(3) = age(2) + 2
  9. age(2) = age(1) + 2
  10. age(1) = 24
  11. '''
  12.  
  13. def age(n):
  14. if n == 1:
  15. return 24
  16. else:
  17. return age(n-1)+2
  18. print(age(4))

递归实例

《Python》 内置函数补充、匿名函数、递归初识的更多相关文章

  1. Python内置的字符串处理函数整理

    Python内置的字符串处理函数整理 作者: 字体:[增加 减小] 类型:转载 时间:2013-01-29我要评论 Python内置的字符串处理函数整理,收集常用的Python 内置的各种字符串处理 ...

  2. python内置常用高阶函数(列出了5个常用的)

    原文使用的是python2,现修改为python3,全部都实际输出过,可以运行. 引用自:http://www.cnblogs.com/duyaya/p/8562898.html https://bl ...

  3. Python 内置函数补充匿名函数

    Python3 匿名函数 定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问 def func(x,y,z=1): return x+y+z print(func(1,2,3)) 匿名 ...

  4. Python3 内置函数补充匿名函数

    Python3 匿名函数 定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问 def func(x,y,z=1): return x+y+z print(func(1,2,3)) 匿名 ...

  5. Python 内置的一些高效率函数用法

    1.  filter(function,sequence) 将sequence中的每个元素,依次传进function函数(可以自定义,返回的结果是True或者False)筛选,返回符合条件的元素,重组 ...

  6. 学习Pytbon第十天 函数2 内置方法和匿名函数

    print( all([1,-5,3]) )#如果可迭代对象里所有元素都为真则返回真.0不为真print( any([1,2]) )#如果数据里面任意一个数据为真返回则为真a= ascii([1,2, ...

  7. python内置方法补充any

    any(iterable) 版本:该函数适用于2.5以上版本,兼容python3版本. 说明:如果iterable的任何元素不为0.''.False,all(iterable)返回True.如果ite ...

  8. Python内置进制转换函数(实现16进制和ASCII转换)

    在进行wireshark抓包时你会发现底端窗口报文内容左边是十六进制数字,右边是每两个十六进制转换的ASCII字符,这里使用Python代码实现一个十六进制和ASCII的转换方法. hex() 转换一 ...

  9. Python内置的字符串处理函数

    生成字符串变量 str='python String function'   字符串长度获取:len(str) 例:print '%s length=%d' % (str,len(str)) 连接字符 ...

  10. python内置方法补充bin

    bin(x) 英文说明:Convert an integer number to a binary string. The result is a valid Python expression. I ...

随机推荐

  1. vim的个性化配置- 再谈vim的折叠和展开 -- 彻底掌握vim 的展开和折叠!

    http://www.wklken.me/posts/2016/02/03/some-vim-configs.html 一般把 设置成 逗号, 是比较好的, 因为逗号比默认的leader  要方便键入 ...

  2. Ubuntu 登陆界面无限循环问题 以及 root用户无法使用命令问题

    在Ubuntu下配置好了eclipse之后,马上着手用eclipse试运行ns3.在./waf编译的时候出现了"Permission denied"问题. 在网络上查阅了相关资料之 ...

  3. spring Boot启动报错Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotatedElementUtils.getAnnotationAttributes

    spring boot 启动报错如下 org.springframework.context.ApplicationContextException: Unable to start web serv ...

  4. UVa 10881 蚂蚁

    https://vjudge.net/problem/UVA-10881 题意: 一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒.当两只蚂蚁相撞时,二者同时掉头. ...

  5. .NET Core2.0应用IdentityServer4

    IdentityServer4能解决什么问题 假设我们开发了一套[微博程序],主要拥有两个功能:[登陆验证].[数据获取] 随后我们又开发了[简书程序].[知乎程序],它们的主要功能也是:[登陆验证] ...

  6. bugfree 数据库配置 显示No such file or directory

    把数据库服务器  localhost   改成127.0.0.1 sudo vi /etc/hosts 增加: 127.0.0.1   localhost 127.0.0.1   你的hostname ...

  7. c++ 对符合条件的元素进行计数(count_if)

    #include <iostream> // cout #include <algorithm> // count_if #include <vector> // ...

  8. 测试报告 之 testNG + Velocity 编写自定义html测试报告

    之前用testNG自带的test-outputemailable-report.html,做出的UI自动化测试报告,页面不太好看. 在网上找到一个新的报告编写,自己尝试了一下,埋了一些坑,修改了输出时 ...

  9. STL__网上资料

    1. http://bbs.csdn.net/topics/370029802 #include <iostream> #include <limits> #include & ...

  10. Java 集合-Collection接口和迭代器的实现

    2017-10-30 00:30:48 Collection接口 Collection 层次结构 中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素.一些 c ...