冒泡算法:

    相邻两个值进行比较,将较大的值放在右侧,依次比较!

    例如:   

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

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

for m in range(3):     # 等价于 #for m in range(len(li)-2):

    if li[m]> li[m+1]:

        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

第三步

递归

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368

  

def func(arg1,arg2):

    if arg1 == 0:

        print arg1, arg2

    arg3 = arg1 + arg2

    print arg3

    func(arg2, arg3)

func(0,1)

lambda表达式:

    对于简单的函数,也存在一种简便的表示方式,即:lambda表达式

    

# 定义函数(普通方式)
def func(arg):
    
return
arg + 1
  
# 执行函数
result = func(123)
  
# ###################### lambda ######################
  
# 定义函数(lambda表达式)
my_lambda = lambda arg : arg + 1
  
# 执行函数
result = my_lambda(123)

lambda存在意义就是对简单函数的简洁表示

内置函数 

一、map

    

例:

li = [11, 22, 33]new_list = map(lambda a: a + 100, li)li = [11, 22, 33]sl = [1, 2, 3]new_list = map(lambda a, b: a + b, li, sl)二、filter对于序列中的元素进行筛选,最终获取符合条件的序列[object Object]li = [11, 22, 33]new_list = filter(lambda arg: arg > 22, li)#filter第一个参数为空,将获取原来序列三、reduce对于序列内所有元素进行累计操作li = [11, 22, 33]result = reduce(lambda arg1, arg2: arg1 + arg2, li)# reduce的第一个参数,函数必须要有两个参数# reduce的第二个参数,要循环的序列# reduce的第三个参数,初始值获取序列所有元素的和yield生成器range会在内存中创建所有指定的数字,而xrange不会立即创建,只有在迭代循环时,才去创建每个数组。def nrange(num):    temp = -1    while True:        temp = temp + 1        if temp >= num:            return        else:            yield temp自定义生成器nrange2、文件操作的 read 和 xreadlinex 的的区别      1.read会读取所有内容到内存      2.xreadlines则只有在循环迭代时才获取
装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作。  import functoolsdef wrapper(func):    @functools.wraps(func)    def wrapper():        print 'before'        func()        print 'after'    return wrapper@wrapperdef foo():    print 'foo'        或#!/usr/bin/env python#coding:utf-8 def Before(request,kargs):    print 'before'     def After(request,kargs):    print 'after'  def Filter(before_func,after_func):    def outer(main_func):        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)