1.map() 函数,将可迭代对象中每一条数据都执行一次函数,并且将函数执行的返回结果放入另一个可迭代对象中。
2.filter() 函数,会将列表中每一条数据执行一次函数,并将条件为真的数据放入结果中(None、''/、False、0这些都是条件为假的 数据),如:
result = filter(a, [1, 2, 0, False, '', True, '', 0, 3])
for x in result:
print(x)
输出的结果为:1
2
True
3
3.sorted() 函数,对所有可迭代的函数进行排序操作。将列表中的数据两两进行传递:
(1)如果x>y,返回-1;x<y,返回1,。此为降序排序
(2)如果x>y,返回1;x<y,返回-1,。此为升序排序
4.匿名函数。格式为: lambda 参数1、参数2...:函数返回值 函数运算逻辑
(1)当函数重复使用次数少,函数比较简单的时候,可以使用匿名函数。
(2)特点:不用给函数命名,省略了大量的命名操作; 简化代码,省略大量不需要的冗余代码; 方便维护和管理。
如:判断列表中的数据是奇数还是偶数?若是奇数,返回x*x;若是偶数,返回x/2,代码如下:
list1 = [25,2323,34,7,56,2,41,524,3,65,857,76,232]
def filter_num(x):
if x % 2 == 0:
return x/2
else:
return x*x
利用匿名函数只需要一句代码即可;
result = map(lambda x: x/2 if x % 2 == 0 else x*x, list1)
5.reduce()函数,会对参数列表中元素进行累计。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数 运算,最后得到一个结果。
在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里,如果想要使用它,则需要 通过引入 functools 模块来调用 reduce() 函数:from functools import reduce
6.列表生成式:就是用来快速生成一个列表的公式,如:
list1 = [x for x in range(100)]
list2 = [x for x in range(100) if x % 2 == 0]
7.练习:使用map+reduce+lamda+列表生成式产生一个存放100个0~100随机整数的列表,将生成的列表中每一条数据进行判 断,如果是奇数,返回**2;如果是偶数,返回/2.把计算的结果进行累加,最终得到一个计算的结果数字。具体代码如下:
list_run = [random.randint(0,100) for x in range(100)]
print(list_run)
map_rs = map(lambda x:x/2 if x % 2 == 0 else x**2,list_run)
result = reduce(lambda x,y:x+y ,map_rs)
print(result)
result = reduce(lambda x,y:x+y ,map(lambda x:x/2 if x % 2 == 0
else x**2,[random.randint(0,100) for x in range(100)]))
print(result)