Python中针对函数处理的特殊方法

yipeiwu_com6年前Python基础

很多语言都提供了对参数或变量进行处理的机制,作为灵活的Python,提供了一些针对函数处理的特殊方法
filter(function, sequence): 对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple
map(function, sequence) : 对sequence中的item依次执行function(item),见执行结果组成一个List
reduce(function, sequence, starting_value): 对sequence中的item顺序迭代调用function
sum(sequence): 对集合中的元素进行累加

下面针对上面的描述写一个简单的小例子:

复制代码 代码如下:

__author__ = 'Administrator'

from functools import reduce

#主要用来掩饰map可以将某个序列中的元素传递给某个特殊的函数来处理
def map_demo():
    #定义一个将字母转换成大写的函数
    def to_upper(ch):
        return str(ch).upper()

    #对给定字符串中的每个字母应用to_upper函数
    print(list(map(to_upper, "asdfasdfuasdlaksdjf".split())))


#主要使用一个基于布尔值得函数对元素进行过滤
def filter_demo():
    def is_alnum(ch):
        return ch.isalnum()

    #!se会被过滤掉
    test_list = ['sdas', '123d', '!se', '孙阿斯蒂芬']
    #基于具体函数
    print(list(filter(is_alnum, test_list)))
    #基于列表推导
    print(list(x for x in test_list if x.isalnum()))
    #基于匿名函数
    print(list(filter(lambda x: x.isalnum(), test_list)))


#reduce的主要功能是利用列表中的两个元素迭代调用某个函数,最后得到一个结果
#在python3中要显示的添加 from functools import reduce
#本例中运行的过程大致是先是1+2=3,利用3+4=7,7+4.......
def reduce_demo():
    print(reduce(lambda x, y: x + y, range(1, 10)))


#利用sum函数累加列表中的值
def sum_demo():
    print(sum(range(10)))


if __name__ == "__main__":
    #map_demo()
    #filter_demo()
    #reduce_demo()
    sum_demo()

相关文章

python+pyqt实现12306图片验证效果

python+pyqt实现12306图片验证效果

本文实例为大家分享了python实现12306图片验证效果的具体代码,供大家参考,具体内容如下 思路:在鼠标点击位置加一个按钮,然后再按钮中的点击事件中写一个关闭事件. #codin...

python中的变量如何开辟内存

python中的变量如何开辟内存

python下的变量 不需要预先声明变量的类型,变量的类型和值在赋值的那一刻被初始化(声明和定义的过程一起完成) 在python中, 每一个变量在内存中创建,我们可以通过变量来查看内存中...

使用pandas实现连续数据的离散化处理方式(分箱操作)

Python实现连续数据的离散化处理主要基于两个函数,pandas.cut和pandas.qcut,前者根据指定分界点对连续数据进行分箱处理,后者则可以根据指定箱子的数量对连续数据进行等...

Python3使用pandas模块读写excel操作示例

本文实例讲述了Python3使用pandas模块读写excel操作。分享给大家供大家参考,具体如下: 前言 Python Data Analysis Library 或 pandas 是...

Python实现接受任意个数参数的函数方法

这个功能倒也不是我多么急需的功能,只是恰好看到了,觉得或许以后会用的到。功能就是实现函数能够接受不同数目的参数。 其实,在C语言中这个功能是熟悉的,虽说实现的形式不太一样。C语言中的ma...