栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python学习 19 - 函数编程 以及常用命令

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python学习 19 - 函数编程 以及常用命令

函数表达由两部分组成

        1、编程语言定义的函数

        2、数学意义的含函数

先有变量的 数学关系 再用编程语言定义的 函数去实现这个 数学的函数 在程序里面的调用

函数编程得好处是 代码比较简洁 但是可读性差

函数编程的内部不应该有变量赋值这样的保存形式,这样容易把程序写死了,后期修改比较繁琐

不同编程模式,相同的条件和结果,但是代码表达方式却不同

1、

nnn = [12,3,4,88,96,55,46]
x = 0
for n in nnn:
	x = x + n
print(x)

2、

nnn = [12,3,4,88,96,55,46]

def Diejia (shuzu):
    x = 0
    for n in shuzu:
        x = x + n
    return x

print(Diejia(nnn)) #304

3、

nnn = [12,3,4,88,96,55,46]

def Jiafa(x,n):
    x = x + n
    return x

def XunHuan (shuzu):
    x = 0
    for n in shuzu:
        x = Jiafa(n, x)
    return x

print(XunHuan(nnn)) #304

4、

nnn = [12,3,4,88,96,55,46]

def XunHuan (jiagong,shuzu):
    x = 0
    for n in shuzu:
        x = jiagong(n, x)
    return x

print(XunHuan(lambda x,n:x + n,nnn)) #304

常用处理命令

        1、map 可以调用内部函数,处理序列中的每一个元素,得到的结果是一个‘列表’该‘列表’元素个数及位置与原来一样

liebiao = [2,4,6,8,3]
print(list(map(lambda a:a + 1,liebiao))) #[3, 5, 7, 9, 4]

这里就是用 map 调用 liebiao 中得每一个元素,并且用 lambda a:a + 1 这个匿名函数进行加工,然后从新组成一个数列

如果不适用map这个命令,使用函数和匿名函数编程就会是下面得样子

liebiao = [2,4,6,8,3]
liebiao1 = []
def XunHuan(yunsuan,zhi):
    for x in zhi:
        x = yunsuan(x)
        liebiao1.append(x)
    return liebiao1

print(XunHuan(lambda a:a + 1,liebiao)) #[3, 5, 7, 9, 4]

如果map命令和匿名函数都不使用就是一下的状态

liebiao = [2,4,6,8,3]
liebiao1 = []
def ZiJiaYi(a):
    return a +1

def XunHuan(yunsuan,zhi):
    for x in zhi:
        x = yunsuan(x)
        liebiao1.append(x)
    return liebiao1

print(XunHuan(ZiJiaYi,liebiao)) #[3, 5, 7, 9, 4]

他们最终得打印结果是一样得但是,用了map之后 命令行明显就是少了很多 很简洁,但是程序得可读性很差 ,没用map编程 就会导致程序得代码变多,可是相对得 程序也比较好理解,没有匿名函数和map 得程序最长 但是也最容易理解

        2、filter

它功能是有两个参数 第一个是 一个函数 ,第二个是需要加工的可迭代对象,然后会循环拿出第二个数据里面每一个元素就像for循环一样 交给第一个函数去做处理 处理的结果是布尔值,结果是True 就会保留这个元素 而处理的结果是 Flase 就丢弃这个元素,也就是说

遍历序列中的每一个元素,按设定的条件判断每个元素得到布尔值,如果是True则留下该元素

list11 = ['x_adam','x_abc','x_xxx','vvv','nnn']
print (list(filter(lambda a:not a.startswith('x_'),list11))) #['vvv', 'nnn']

以上就是使用匿名函数给出判断条件位 开头不是x_ 得元素,filter会把括号中得第二个数据里面得元素依次用 这个匿名函数进行判断,并且留下判断位True得值

下面咱们看看不适用filter和匿名函数所编写得程序吧

list = ['x_adam','x_abc','x_xxx','vvv','nnn']
list1 = []
for x in list:
    if not x.startswith('x_'):
        list1.append(x)

print(list1)#['vvv', 'nnn']

虽然输出得结果是一样得但是,他们得命令长度确实不同的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号