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

第七篇、函数二

时间:2017-03-05 23:25:29      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:turn   alt   contract   open   **kwargs   数据库连接池   需要   nbsp   包含   

一、冒泡排序

技术分享
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
View Code

三、内置函数

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
434745
‘‘‘
给出两个列表,然后用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

 

第七篇、函数二

标签:turn   alt   contract   open   **kwargs   数据库连接池   需要   nbsp   包含   

原文地址:http://www.cnblogs.com/pyrene/p/6506964.html

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