python学习笔记(四)
一、冒泡算法
思路:
1、先求出最大值,放在最后,从第一个值开始(m),和它后面的一个值m+1进行比较,把较大的值放在后面,这样,循环len(li)-1此,就能得出最大值,放在了列表的最后。,所以第一次循环是循环了len(li)-1次。
2、第二次循环是排除最后一个值不用算了,把最大的值放在倒数第二个,所以循环len(li)-2次
3、以此类推,知道最后一次循环,也就是m为li(0)和第二个数比较,所以就是for m in len(0);
4、写那么多for循环很麻烦,所以设定一个n值,n为{1,列表的所有个数len(li)}
5、需要注意的是,两个数交换位置的时候,需要用一个临时变量。
代码:
1 li = [34,11,4,99,45,12,1] 2 for n in range(1,len(li)): 3 for m in range(len(li)-n): 4 num1= li[m] 5 num2=li[m+1] 6 if num1 > num2: 7 temp= li[m] 8 li[m]=num2 9 li[m+1]=temp 10 print li
二、lambda函数
特殊的声明函数方式,用于创建新的函数对象,并且在运行时返回函数对象
lambda是一个表达式,而不是一个语句
lambda主体是一个单个的表达式,而不是一个代码块
用于定义小型的函数,在函数中仅包含单一的参数表达式,而不能包含其他语句,但是可以调用其他函数
特点:
处理简单逻辑
自动return
开始都这样用:
1 def func(arg): 2 return arg - 1 3 func(1) 4 result1 = func(199) 5 print "def 形式:",result1
用lambda实现:
1 func2=lambda a : a+1 2 result2 = func2(199) 3 print "lambda : ",result2 4 5 #lambda传入多个参数 6 func3=lambda a,b : a+b 7 result3=func3(100,100) 8 print "多个参数",result3
三、map()函数
定义:
map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
作用:对每一个元素都进行操作
1 li = [33,55,77] 2 def func1(arg): 3 return arg + 10 4 new_list=map (func1,li) 5 print new_list
内部实现
1 new_list=[] 2 for item in li: 3 new_item=item+10 4 new_list.append(new_item)
#传两个列表
1 l1= [11,22,33] 2 l2=[3,4,5,] 3 def func2(a1,a2): 4 return a1+a2 5 print map(func2,l1,l2)
#同时遍历第一个和第二个值;
#如果值为空,则是none,没法相加会报错
#lambda方式
print map(lambda a1,a2:a1+a2,l1,l2)
四、filter()函数
作用:过滤,获取指定元素集合
li= [11,22,33,44,55,0] print filter(lambda a:a>33,li) ==>[44, 55]
五、reduce()函数
作用:累计操作
1 li=[1,2,3,4,5,6,7,8] 2 print reduce(lambda a1,a2:a1+a2 ,li) ===》36 3 print reduce(lambda a1,a2:a1+a2 ,li,10000) ===》10036 #10000是基准参数
六、yield生成器
冻结在上一次的操作点,下次再执行时,继续执行
1 def func(arg): 2 seed= 0 3 while True: 4 seed=seed+1 5 if seed >arg: 6 return 7 else : 8 yield seed 9 for i in func(3): 10 print i 11 ==》 12 1 13 2 14 3
七、装饰器
定义:
在函数调用前后增加功能,但又不更改源代码,也不改变函数的调用方式,这种在代码运行期间动态增加功能的方式,称为装饰器( Decorator )。
1 def wrapper(func): 2 def login(): 3 user=raw_input("input user name:") 4 if user=="name": 5 func() 6 else:print "invalid user" 7 return login 8 9 @wrapper 10 def home(): 11 print "welcom to the homepage" 12 13 home()

浙公网安备 33010602011771号