一 、匿名函数

  有些时候,我们不需要显式的定义函数,可以使用匿名函数临时快速定义函数。

lambda x: x * x

关键字lambda表示匿名函数,冒号前面的x表示函数的参数,多个参数用','隔开,返回值就是表达式的结果。

二 、递归函数

  递归函数就是在函数内部调用函数本身。如:

def fact(n):
if n==1:
return 1
return n * fact(n - 1)

递归函数必须有终止条件,否则会导致无限递归,使栈溢出。python的递归最大深度为1000,但会在深度为998左右出现报错。

递归使用:

1. 遍历某文件夹中所有文件

import os
def read(filepath, n):
files = os.listdir(filepath) # 获取到当前文件夹中的所有文件
for fi in files: # 遍历文件夹中的文件,这里获取的只是本层文件名
fi_d = os.path.join(filepath, fi)
if os.path.isdir(fi_d): # 如果该路径下的文件是文件夹
print("\t"*n, fi)
read(fi_d, n+1) # 继续进行相同的操作
else:
print("\t"*n, fi) # 递归出口,最终在这里隐含着return # 递归遍历目录下所有文件
read('e:/pythonDemo', 0)

2. 汉诺塔问题

# 无论多少个圆块,可以抽象成为同一套思路:就是想办法把(n-1)个a柱上的圆块先移动到b柱,
# 然后把最底部最大的一个圆块移动到c柱,最后把b柱上的(n-1)个圆块移动到c柱
def hanoi(n, a, buffer, c):
if n == 1:
print(a, '--->', c) # 定义从a柱移动到c柱的操作
else:
hanoi(n-1, a, c, buffer) # 把(n-1)个a柱上的圆块移动到缓冲区buffer柱
hanoi(1, a, buffer, c) # 把最底部的最大的圆块移动到c柱
hanoi(n-1, buffer, a, c) # 把(n-1)个缓冲区buffer柱上的圆块移动到c柱 hanoi(3, 'A', 'B', 'C')

三 、偏函数

函数可以通过设置参数的默认值降低函数调用的难度,偏函数就有这种用处。

如用int()函数实现二进制的转换:

>>>int('', base=2)
337

python的functools模块的partial函数就可以创建一个偏函数:

>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('')
85

四 、sorted

python内置的sorted()函数可以对list进行排序,它的key参数控制排序方式是以什么作为排序参照的,reverse=False/True控制是正向排序还是反向排序。

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']

五 、filter

filter()函数用于过滤序列,函数传入两个参数,第一个是一个返回布尔值的函数,第二个是list,filter会将列表中的元素依次传入第一个函数中,返回值是True的将保留。

def not_empty(s):
return s and s.strip() list(filter(not_empty, ['A', '', 'B', None, 'C', ' ']))
# 结果: ['A', 'B', 'C']

六 、map

map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

>>> r = map(lambda x: x*x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

七 、reduce

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。

即:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

把序列[1, 3, 5, 7, 9]变换成整数13579:

>>> from functools import reduce
>>> def fn(x, y):
... return x * 10 + y
...
>>> reduce(fn, [1, 3, 5, 7, 9])
13579

Python常用高级函数的更多相关文章

  1. Python 常用string函数

    Python 常用string函数 字符串中字符大小写的变换 1. str.lower()   //小写>>> 'SkatE'.lower()'skate' 2. str.upper ...

  2. Python常用功能函数

    Python常用功能函数汇总 1.按行写字符串到文件中 import sys, os, time, json def saveContext(filename,*name): format = '^' ...

  3. Python常用功能函数总结系列

    Python常用功能函数系列总结(一) 常用函数一:获取指定文件夹内所有文件 常用函数二:文件合并 常用函数三:将文件按时间划分 常用函数四:数据去重 Python常用功能函数系列总结(二) 常用函数 ...

  4. Python常用功能函数系列总结(一)

    本节目录 常用函数一:获取指定文件夹内所有文件 常用函数二:文件合并 常用函数三:将文件按时间划分 常用函数四:数据去重 写在前面 写代码也有很长时间了,总觉得应该做点什么有价值的事情,写代码初始阶段 ...

  5. Python常用功能函数系列总结(三)

    本节目录 常用函数一:词频统计 常用函数二:word2vec 常用函数三:doc2vec 常用函数四:LDA主题分析 常用函数一:词频统计 # -*- coding: utf-8 -*- " ...

  6. 16个python常用魔法函数

    ==,is的使用 ·is是比较两个引用是否指向了同一个对象(引用比较). ·==是比较两个对象是否相等 1.__ init__(): 所有类的超类object,有一个默认包含pass的__ init ...

  7. python常用魔法函数

    1.__init__(): 所有类的超类object,有一个默认包含pass的__init__()实现,这个函数会在对象初始化的时候调用,我们可以选择实现,也可以选择不实现,一般建议是实现的,不实现对 ...

  8. Python常用功能函数系列总结(七)

    本节目录 常用函数一:批量文件重命名 常用函数一:批量文件重命名 # -*- coding: utf-8 -*- """ DateTime : 2021/02/08 10 ...

  9. Python常用功能函数系列总结(六)

    本节目录 常用函数一:词云图 常用函数二:关键词清洗 常用函数三:中英文姓名转换  常用函数四:去除文本中的HTML标签和文本清洗 常用函数一:词云图 wordcloud # -*- coding: ...

随机推荐

  1. css3实现小程序的动画

    <view class="biground" >     <block wx:for="{{Namelist}}" wx:key=" ...

  2. input date 赋值的坑及改变时如何获取 input date的值

  3. Springboot 使用过滤器进行加密解密(二)

    之前写过一篇关于过滤器实现加密解密功能的文章,但是在实际开发业务中发现,还是有一些问题的,在此特地说明. 第一:过滤器走两遍的问题: 1.过滤器上,添加了两个注解 第一个:@Compent   将此F ...

  4. Go学习之初出茅庐

    在一个月黑风高的夜晚,机缘巧合与Go语言一面之缘,被她的简洁.灵活.高效所吸引,让我有深入学习的冲动,现在开始我的成长之路吧.

  5. python 多进程的两种创建方式

    Python中使用线程有两种方式:函数或者用类来包装线程对象. 第一种---------函数 菜鸟教程的我没看懂,说说我自己懂的----看视频理解的 import time import thread ...

  6. ACM山东工商 Contest - 软件171-2 第1次测验

    #include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node *next ...

  7. 491. Increasing Subsequences

    这种increasing xxx 题真是老客户了.. 本题麻烦点在于不能重复, 但是和之前的那些 x sum的题目区别在于不能排序的 所以.... 我还是没搞定. 看了一个Java的思路是直接用set ...

  8. 学习笔记CB011:lucene搜索引擎库、IKAnalyzer中文切词工具、检索服务、查询索引、导流、word2vec

    影视剧字幕聊天语料库特点,把影视剧说话内容一句一句以回车换行罗列三千多万条中国话,相邻第二句很可能是第一句最好回答.一个问句有很多种回答,可以根据相关程度以及历史聊天记录所有回答排序,找到最优,是一个 ...

  9. ajax的小知识---总是得到重复的数据

    按xmlhttp.open("GET","/try/ajax/demo_get.php",true);发送,可能会得到缓存中的结果; 可以改为xmlhttp.o ...

  10. Python基础:十一、流程控制(if语句、while循环)

    一.流程控制——if循环 1.第一种语法: if条件: #引号是将条件与结果分开 结果1 #四个空格,或者一个tab键,这个是告诉程序满足条件的话,运行这个结果 结果2 #如果条件是真(True)执行 ...