内置函数
一、map
对序列的每一个元素进行操作,最终获得操作后的新序列。

实例:

 1 #!/usr/bin/env  python
 2 # --*--coding:utf-8 --*--
 3 li = [11, 22, 33]
 4 news = map(lambda a: a + 2, li)
 5 print news
 6 li = [22, 33, 44]
 7 l1 = [11, 22, 33]
 8 news = map(lambda a, b: a - b, li, l1)
 9 print news
 li = [11, 22, 33]
 news = map(lambda a: a * 2, li)
 print news
 li = [100, 2200, 3300]
 news = map(lambda a: a / 2, li)
 print news

实例输出结果:

 [13, 24, 35]
 [11, 11, 11]
 [22, 44, 66]
 [50, 1100, 1650]

序列中的每一个元素经过操作,得出新的序列。两个序列相互操作必须元素相同,如果不同会造成多出的元素与None相互操作,出现错误。

 #!/usr/bin/env  python
 # --*--coding:utf-8 --*--
 li = [22, 33, 44]
 l1 = [11, 22]
 news = map(lambda a, b: a + b, li, l1)
 print news

报错信息:

 Traceback (most recent call last):
   File "D:/s11day2/s11day2/test/test.py", line 5, in <module>
     news = map(lambda a, b: a + b, li, l1)
   File "D:/s11day2/s11day2/test/test.py", line 5, in <lambda>
     news = map(lambda a, b: a + b, li, l1)
 TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
二、filter
筛选序列中符合的元素,把符合条件的元素组成一个新的序列。

实例:

 1 #!/usr/bin/env  python
 2 # --*--coding:utf-8 --*--
 3 li = [22, 33, 44]
 4 l1 = [11, 22]
 5 news = map(lambda a, b: a + b, li, l1)
 6 print news#!/usr/bin/env  python
 7 # --*--coding:utf-8 --*--
 8 li = [22, 33, 44, 55, 66, 77, 88, 99]
 9 news_list = filter(lambda a: a > 66, li)
 print news_list
 li = [22, 33, 44, 55, 66, 77, 88, 99]
 news_list = filter(lambda a: a > 44 and a < 88 , li)
 print news_list

输出:

 [77, 88, 99]
 [55, 66, 77]
三、reduce
对序列中的所有元素进行累加

 1 #!/usr/bin/env  python
 2 # --*--coding:utf-8 --*--
 3 li = [22, 33, 44, 55, 66, 77, 88, 99]
 4 news_list = reduce(lambda a, b: a + b, li)
 5 print news_list
 6 li = [22, 33, 44, 55, 66, 77, 88, 99]
 7 news_list = reduce(lambda a, b: a - b, li)
 8 print news_list
 9 li = [22, 33, 44, 55, 66, 77, 88, 99]
 news_list = reduce(lambda a, b: a / b, li)
 print news_list
 li = [22, 33, 44, 55, 66, 77, 88, 99]
 news_list = reduce(lambda a, b: a * b, li)
 print news_list

实例

输出结果:

 484
 -440
 0
 77786550737280
yield生成器

对比range和xrange的区别:

 >>> print range(10)
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 >>> print xrange(10)
 xrange(10)
range直接打印出来,而xange在需要的时候迭代循环才会打印出来,
yield是继续执行上次的操作,如下:
 1 #!/usr/bin/env  python
 2 # --*--coding:utf-8 --*--
 3 def rmange(arg):
 4     seek = 0
 5     while True:
 6         seek = seek + 1
 7         if seek > arg:
 8             return
 9         else:
             yield seek
 for i in rmange(10):
     print i
第一步,从行到下执行函数(def rmange(arg):),第二步,执行for,第三步,调用上面的函数,进入while循环进行判断到yield,第二次for循环的时候直接不用调用def了,直接进入while循环。yiled就是继续执行上次的操作。可以使用上例进行调试测试。
装饰器
作用:具有特殊含义的函数,装饰函数或类。可以在函数执行前或者执行后添加相应的操作。
 1 #!/usr/bin/env  python
 2 # --*--coding:utf-8 --*--
 3 def Before(request,kargs):
 4     print 'before'
 5 def After(request,kargs):
 6     print 'after'
 7 def Filter(before_func,after_func):
 8     def outer(main_func):
 9         def wrapper(request,kargs):
             before_result = before_func(request,kargs)
             if(before_result != None):
                 return before_result;
             main_result = main_func(request,kargs)
             if(main_result != None):
                 return main_result;
             after_result = after_func(request,kargs)
             if(after_result != None):
                 return after_result;
         return wrapper
     return outer
 @Filter(Before, After)
 def Index(request,kargs):
     print 'index'
 if __name__ == '__main__':
     Index(1,2)

执行结果:

 before
 index
 after
根据python运行规律,从上到下,应该是
 before
 after
 index
冒泡算法
作用:根据简单的排序,临近的两个元素进行比较根据要求按顺序排列。
举例:
需求:请按照从小到大对列表 [13, 22, 6, 99, 11] 进行排序
思路:相邻两个值进行比较,将较大的值放在右侧,依次比较!
 li = [13, 22, 6, 99, 11]
 for m in range(4):     # 等价于 #for m in range(len(li)-1):
     if li[m]> li[m+1]:
         temp = li[m+1]
         li[m+1] = li[m]
         li[m] = temp

第二步

 1 li = [13, 22, 6, 99, 11]
 2 for m in range(4):     # 等价于 #for m in range(len(li)-1):
 3     if li[m]> li[m+1]:
 4         temp = li[m+1]
 5         li[m+1] = li[m]
 6         li[m] = temp
 7 for m in range(3):     # 等价于 #for m in range(len(li)-2):
 8     if li[m]> li[m+1]:
 9         temp = li[m+1]
         li[m+1] = li[m]
         li[m] = temp
 for m in range(2):     # 等价于 #for m in range(len(li)-3):
     if li[m]> li[m+1]:
         temp = li[m+1]
         li[m+1] = li[m]
         li[m] = temp
 for m in range(1):     # 等价于 #for m in range(len(li)-4):
     if li[m]> li[m+1]:
         temp = li[m+1]
         li[m+1] = li[m]
         li[m] = temp
 print li

第三步

 li = [13, 22, 6, 99, 11]
 for i in range(1,5):    
     for m in range(len(li)-i): 
         if li[m] > li[m+1]:
             temp = li[m+1]
             li[m+1] = li[m]
             li[m] = temp
          print li

输出结果:

 [13, 22, 6, 99, 11]
 [13, 6, 22, 99, 11]
 [13, 6, 22, 11, 99]
 [6, 13, 22, 11, 99]
 [6, 13, 11, 22, 99]
 [6, 11, 13, 22, 99]
第一个是原值,后面是五次循环左右两个元素对比根据大小排序。
递归
程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
在数学上,费波那契数列是以递归的方法来定义:
 F0 = 0     (n=0)
 F1 = 1    (n=1)
 Fn = F[n-1]+ F[n-2](n=>2)

程序源代码:

方法一

 #!/usr/bin/python
 # -*- coding: UTF-8 -*-
 def fib(n):
     a,b = 1,1
     for i in range(n-1):
         a,b = b,a+b
     return a
 # 输出了第10个斐波那契数列
 print fib(10)

方法二

 #!/usr/bin/python
 # -*- coding: UTF-8 -*-
 # 使用递归
 def fib(n):
     if n==1 or n==2:
         return 1
     return fib(n-1)+fib(n-2)
 # 输出了第10个斐波那契数列
 print fib(10)
以上实例输出了第10个斐波那契数列,结果为:
55

方法三

如果你需要输出指定个数的斐波那契数列,可以使用以下代码:
 def fib(n):
     if n == 1:
         return [1]
     if n == 2:
         return [1, 1]
     fibs = [1, 1]
     for i in range(2, n):
         fibs.append(fibs[-1] + fibs[-2])
     return fibs

# 输出前 10 个斐波那契数列

print fib(10)

以上程序运行输出结果为:

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

python之路:进阶篇 内置函数的更多相关文章

  1. [Python笔记]第四篇:内置函数

    本篇主要内容:内置函数 函数 参考:https://docs.python.org/3.5/library/functions.html 内置函数列表 一.数学运算类 abs(x)求绝对值 >& ...

  2. 【python之路46】内置函数2,是【python之路18】的补充

    将3.5版本中的68个内置函数,按顺序逐个进行了自认为详细的解析.为了方便记忆,将这些内置函数进行了如下分类: 数学运算(7个) 类型转换(24个) 序列操作(8个) 对象操作(7个) 反射操作(8个 ...

  3. 【python之路18】内置函数,补充请看【python之路46】

    1.abs(number)表示某个数字的绝对值 print(abs(-123)) #打印出123 2.all(iterable) 表示可迭代的参数全部为True那么返回True,否则返回False r ...

  4. Python进阶(五)----内置函数Ⅱ 和 闭包

    Python进阶(五)----内置函数Ⅱ 和 闭包 一丶内置函数Ⅱ ####内置函数#### 特别重要,反复练习 ###print() 打印输入 #sep 设定分隔符 # end 默认是换行可以打印到 ...

  5. 【python】dir(__builtins__)查看python中所用BIF(内置函数)

    dir(__builtins__)查看python中所用BIF(内置函数)

  6. 查看python内部模块命令,内置函数,查看python已经安装的模块命令

    查看python内部模块命令,内置函数,查看python已经安装的模块命令 可以用dir(modules) 或者用 pip list或者用 help('modules') 或者用 python -m  ...

  7. Python学习(八) —— 内置函数和匿名函数

    一.递归函数 定义:在一个函数里调用这个函数本身 递归的最大深度:997 def func(n): print(n) n += 1 func(n) func(1) 测试递归最大深度 import sy ...

  8. python基础12_匿名_内置函数

    一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...

  9. python大法好——递归、内置函数、函数进阶

    1.递归(自己干自己) def fun(n): n=n/2 print(n) if(n>2) fun(n) #函数调用 fun(10) 结果是5 2 1 0 递归的执行过程:递归执行到最里面一层 ...

随机推荐

  1. MC 在1分钟图拿出5分钟,15分钟,30分钟,1小时的K线

    using System; using System.Drawing; using System.Linq; using System.Collections; namespace PowerLang ...

  2. springboot 打包

    springboot 打包 先clean 然后 maven package 通过命令java -jar target/GoshenWepPro-0.1.0.jar运行程序

  3. PHP数学函数试题

    1.求绝对值的函数是什么? 2.在任意进制之间转换数字的函数是什么? 3.二进制转换为十进制,十进制转换为二进制,十六进制转换为十进制,十进制转换为十六进制,八进制转换为十进制,十进制转换为八进制的函 ...

  4. gre tunnel

    http://searchenterprisewan.techtarget.com/tip/GRE-tunnel-vs-IPsec-tunnel-What-is-the-difference Enca ...

  5. 设置UITabBarController上ImageInsets后点击不断缩小

    最近遇到了这样一个情况,客户要求做出这种效果的UITabBarController. 通过各种查询,得出UITabBarController有这样一个属性,是设置它的图片距上下左右距离的属性: nav ...

  6. eclipse,android Localization (Internationalization) 安卓本地化(国际化)

    1.创建新的资源文件,名字保持一致.提示"已存在",继续. 2.使用“语言”作为识别器,然后选择相应的语言代码.Tips:其他的适配,如国家.屏幕大小等,也是通过这里的识别器实现适 ...

  7. Linux学习 -- Shell基础 -- Bash基本功能

    历史命令 history -c   clear -w   写入 ~/.bash_history 默认保存1000条, 可在/etc/profile中修改 调用 Tab补全 命令.目录.文件 命令别名 ...

  8. yii migrate 设计博客

    yii migrate/create create_blog_table该命令生成的迁移文件位于 advanced\console\migrations 目录,可能你已经注意到了,yii migrat ...

  9. 使用C语言扩展Python

    开发环境:Ubuntu9.10,python2.6,gcc4.4.1 1,ubuntu下的python运行包和开发包是分开的,因此需要在新利得里面安装python-all-dev,从而可以在代码中引用 ...

  10. ab测试 uwsgi遇到的问题

    1 请求并发数目较大时,接收到的数目小于发送的数目 1.1 描述:uwsgi正常返回302跳转 ab -n 5000 -c 250 -g test.log "192.168.50.20:90 ...