本文共 1678 字,大约阅读时间需要 5 分钟。
过滤器
先来看下Python自己的注释如下:
help(filter)class filter(object) | filter(function or None, iterable) --> filter object | | Return an iterator yielding those items of iterable for which function(item) | is true. If function is None, return the items that are true....
大概意思是:filter有两个参数。第一个参数可以是一个参数也可以是None,如果是一个函数的话,则将第二个可迭代数据里的每一个元素作为函数的参数进行计算,把返回的True的值筛选出来;如果第一个参数为None,则直接将第二个参数中为True的值筛选出来。
实例如下:temp = filter(None,[200,-9,0,True,False])print(list(temp),type(temp))#-----output-------------------------[200, -9, True]
# 尝试写一个筛选基数的过滤器:def odd(x): return x % 2temp = filter(odd,range(10))print(list(temp),type(list))# 如果使用 lambda 函数来操作,效果如下:list(filter(lambda x :x%2,range(10)))#-----output--------------------------[1, 3, 5, 7, 9]
映射
map()找个内置函数也有两个参数,仍然是一个参数和一个可迭代序列,将序列的每一个元素作为函数的参数进行运算加工,直到可迭代序列每个元素都加工完毕,返回所有加工后的元素构成的新序列。
list(map(lambda x :x*2),range(10))
将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
a = [1,2,3]b = [4,5,6]c = [7,8,9,10,11]zipped = zip(a,b) zipped_list = list(zipped)print(zipped,zipped_list)zipped = zip(a,c) zipped_list = list(zipped)print(zipped,zipped_list)#-----output--------------------------[(1, 4), (2, 5), (3, 6)] [(1, 7), (2, 8), (3, 9)]
枚举
enumerate()方法生成由二元组(二元组就是元素数量为二的元组)构成的一个迭代对象,每个二元组是由可迭代参数的索引号以及对应的元素组成的。
str1 = "nihui"for each in enumerate(str1): print(each) #-----output--------------------------(0, 'n')(1, 'i')(2, 'h')(3, 'u')(4, 'i')
Python 允许使用 lambda 关键字来创建匿名函数。
具体实例如下:# 正常函数定义如下: def ds(x): return 2 * x + 1 res = ds(5)# lambada 定义如下: ds = lambda x : 2 * x + 1 res = ds(5)
转载地址:http://ysili.baihongyu.com/