冒泡算法:
相鄰兩個值進行比較,將較大的值放在右側,依次比較!
例如:
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)