码迷,mamicode.com
首页 > 其他好文 > 详细

Day-4

时间:2015-11-21 14:35:32      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:oy

冒泡算法:

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

    例如:   

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

自定义生成器nrange

2、文件操作的 read 和 xreadlinex 的的区别
      1.read会读取所有内容到内存
      2.xreadlines则只有在循环迭代时才获取
装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作。
  import functools


def wrapper(func):
    @functools.wraps(func)
    def wrapper():
        print ‘before‘
        func()
        print ‘after‘
    return wrapper

@wrapper
def 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)

本文出自 “9392804” 博客,谢绝转载!

Day-4

标签:oy

原文地址:http://9402804.blog.51cto.com/9392804/1715345

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!