【Python】高阶函数介绍
2016-04-30 18:30
656 查看
其实函数可以作为变量,之前学过C++,对于这种用法并不奇怪。无非就是函数充当变量,可以传入函数而已。
下面分别介绍
举个例子:将 list 中所有的数字转化为字符串:
例子1:将序列 [1, 3, 5, 7, 9] 变换成整数 13579。
例子: 将一个序列中的空字符删掉。
传入自定义函数可以实现自定义排序。
例子1:排序应该忽略大小写,按照字母序排序。
另外数字反序有个很好的方法:
下面分别介绍
Python中常见的高阶函数:
map/reduce,
filter,
sorted
map
map()函数接收两个函数,一个是函数,一个是序列(可迭代均可),
map将传入的函数依次作用到序列的每个元素,并把结果作为新的
list返回
举个例子:将 list 中所有的数字转化为字符串:
>>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]) ['1', '2', '3', '4', '5', '6', '7', '8', '9']
reduce
reduce()把一个函数作用在一个序列[x1, x2, x3.....] 上,这个必须接收两个函数,
reduce将结果和序列的下一元素做累积计算
例子1:将序列 [1, 3, 5, 7, 9] 变换成整数 13579。
>>>reduce(lambda x, y : x * 10 + y, [1, 3, 5, 7, 9]) 13579
filter
filter()函数用于过滤序列。
filter()接收一个函数和 一个序列 。与 map() 不同的是,
filter()把传入的函数依次作用于每个元素,然后根据返回值是
True或
False决定保留还是丢弃该元素。
例子: 将一个序列中的空字符删掉。
>>>filter(lambda s : s and s.strip(), ['A', '', 'B', None, 'C', ' ']) ['A', 'B', 'C']
sorted
>>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36]
传入自定义函数可以实现自定义排序。
例子1:排序应该忽略大小写,按照字母序排序。
def cmp_ignore_case(s1, s2): u1 = s1.upper() u2 = s2.upper() if u1 < u2: return -1 if u1 > u2: return 1 return 0 >>> sorted(['bob', 'about', 'Zoo', 'Credit'], lambda s1, s2 : s1.upper() -s2.upper()) ['about', 'bob', 'Credit', 'Zoo']
另外数字反序有个很好的方法:
sorted([36, 5, 12, 9, 21][::-1]
相关文章推荐
- Python break和continue
- python使用zlib实现压缩与解压字符串
- 安装mysql-python:EnvironmentError: mysql_config not found
- python基础(一)
- Python核心编程 第七章练习
- python day2:python 初识(二)
- python学习之旅之python简单命令
- python range()和xrange()
- windows系统下Python3.5.1安装教程
- Python 深浅拷贝
- 用python实现socket通信
- Python collections类
- Python2.7.11安装matplotlib,numpy,scikit-learn等其他包,w7x86x64下无问题
- python检测字符串是否只由数字组成
- python中list的赋值处理
- theano, sklearn--- win10 64 bit 配置anaconda(Python2.7)
- [python]Python Fabric - No hosts found. Please specify (single) host string for connection
- python条件语句嵌套
- Python并行处理——多线程
- IronPython 设置包路径