一、冒泡排序
li = [15,14,13,12,11] """ 这里是外面套循环轮数,内部循环拿到一个最大值 记住,range的循环不带最后一个 里面循环是拿到一个最大值,然后外面是循环多少轮那就把最大值拿出来了 """ ‘‘‘ for n in range(1,len(li)): for m in range(len(li)-n): num1 = li[m] num2 = li[m+1] if num1>num2: tmp = num1+num2 li[m] = tmp -num1 li[m+1] = tmp - num2 print li ‘‘‘ """ 第二种冒泡方式比较 选择两个列表进行比较 li[n] = [15,14,13,12] li[m] = [14,13,12,11] """ for n in range(len(li)-1): for m in range(n+1,len(li)): if li[m]>li[n]: tmp = li[n] li[n] = li[m] li[m] = tmp print li
代码
二、lambda表达式
‘‘‘ lambda表达式只能写 1、(替代)简单的函数 2、自动return 简化的if else,三元运算 简化的函数定义,lambda表达式 具体规则如下 def func(args): return args + 1 写成lambda表达式如下: func(函数名) = lambda args(参数):(返回值)args +1 func() ‘‘‘ def func1(arg): return arg + 1 result = func1(100) print result func2 = lambda a : a+1 result = func2(1000) print result func3 = lambda a,b,**kwargs : a+b result = func3(1000,888,) print result 输出如下: 101 18888
三、内置函数
map 所有元素操作
filter过滤,获取指定元素集合
reduce 累计操作
‘‘‘ 遍历函数,对序列中每个元素进行操作,最终获取新的序列 格式:new_list = map(函数名,序列) 就是把序列放入函数名的函数中执行之后让如到new_list里面 ‘‘‘ li = [33,37,35] def func1(args): return args + 10 new_list = map(func1,li) print new_list 43,47,45 ‘‘‘ 给出两个列表,然后用lambda表达式和普通表达式让两个列表相加 ‘‘‘ l1 = [11,12,13] l2 = [21,2,3] def func2(a1,a2): return a1 +a2 print map(func2,l1,l2) print map(lambda a1,a2:a1+a2,l1,l2) ‘‘‘ 注意下面: l1 = [11,12,13] l2 = [21,2,3] l3 = [1,2] def func3(a1,a2,a3): return a1 + a2 + a3 print map(func3,l1,l2,l3) 注意上面的会出错,主要原因是序列里面的数不一样,这个时候的l3的第三个数是None,如果想要正确运行需要做一下内容,进行判断 if not a3:这里的意思是a3不为真的时候,也就是包含none的时候 ‘‘‘ l1 = [11,12,13] l2 = [21,2,3] l3 = [1,2] def func3(a1,a2,a3): if not a3: a3 = 0 return a1 + a2 + a3 print map(func3,l1,l2,l3)
内置函数filter(筛选)
对于序列中的元素进行筛选,最终获取符合条件的序列(条件为真的时候就放入到一个新的序列里面) filter默认取真的值,0字符串等都是false ‘‘‘ li = [11,22,33,44,0] print filter(lambda a:a > 33,li)
内置函数reduce
对于序列内所有元素进行累计操作 reduce(函数名,序列,基数(可选)),所有的运算结果都是在基数之上进行的 ‘‘‘ li = [1,2,3,4,5,6,7,8] result = reduce(lambda arg1,arg2:arg1 + arg2,li,1000) print result 结果1036
四、yield生成器
yield生成器 ---- 制作数据库连接池 记住上一次操作(冻结),下次再执行时,继续执行 函数内,return之后,函数执行完毕,结束了生命周期 ‘‘‘ def func1(): yield 1 yield 2 for i in func1(): print i 结果为1 和2 自己制作一个xrange生成器 ‘‘‘ def mrange(arg): seed = 0 while True: seed = seed + 1 if seed > arg: return else: yield seed for i in mrange(10): print i
时间: 2024-10-10 05:40:23