python 高阶函数 filter, map, reduce, sorted
python内置函数 all, any
#1. filter 作用是从一个序列中过滤出符合条件的元素,将结果以一个可迭代对象
'''
使用方法:filter(function,iterable)
其中,function是一个用于判断的函数,iterable是一个可迭代对象,可以是列表、元组、集合或字符串等。
filter()会将iterable中的每个元素依次传给function进行判断,返回满足条件的元素组成的迭代器。
filter()函数的返回值是一个迭代器,进行一次迭代后,迭代器中的元素就会被消耗,
若需要多次访问结果,可以将他转为列表或使用循环逐个访问
'''
#1.筛选列表中的偶数
li = [1,2,3,4,5,6]
def is_enev(num):
return num % 2 == 0
filter_li = filter(is_enev, li) #迭代对象
print(list(filter_li)) #转化为列表输出
#2.结合lambda 函数
li = [1,2,3,4,5,6]
filter_t = filter(lambda x: x%2==0, li)
print(list(filter_t)) #[2, 4, 6]
#3.可以将filter()的函数参数设置为None,filter()函数会自动过滤掉那些判断为假的元素.
li = [1,2,3,4,5,0]
filter_t = filter(None, li)
print(list(filter_t)) #[1, 2, 3, 4, 5]
'''
2.reduce(归约)函数:作用是对一个序列进行归约操作,将其简化为一个数。
reduce(function, sequence[, initial])
其中function是归约函数,sequence是序列,initial是归约初始化值
reduce函数会将归约函数function递归作用于序列sequence的每个元素,
将结果与下一个元素一起作为function的输入,最终仅得到一个结果值。
如果指定了initial,则将该值与序列的第一个元素一起进行归约操作
'''
from functools import reduce
#reduce实现累加
def add(x, y):
return x+y
li = [1,2,3,4,5]
result = reduce(add, li)
print(result) #15
#指定初始值为10
li = [1,2,3,4,5]
result = reduce(add, li, 10)
print(result) #25
#reduce()与lambda函数的搭配
result = reduce(lambda x, y : x+y, li)
print(result) #15
'''
3.map(映射)函数:作用是对一个序列中的每个元素进行函数操作,返回一个新的序列。
map函数的函数原型如下:
map(function, sequence)
其中function是操作函数,sequence是序列
map函数会对序列中的每个元素依次调用function函数,返回一个新的序列
'''
#列表中数字的平方
li = [6,8,2,4]
def squear(x):
return x*x
re_list = map(squear, li)#可迭代序列
#转化为列表输出
print(list(re_list)) #[36, 64, 4, 16]
#map处理多个迭代对象
l1 = [1,2,3]
l2 = [4,5,6]
def text(a, b):
return a + b
re_1 = map(text, l1, l2)
print(list(re_1))
'''
sorted函数的函数原型如下:
sorted(iterable, key=None, reverse=False)
其中iterable是可迭代对象,key是排序函数,reverse是排序是否倒序
sorted函数会返回一个新的集合,该集合是iterable排序后的结果。
'''
#对列表进行排序
list1 = [0,9,8,6,3,1,4]
result = sorted(list1)
print(result) #[0, 1, 3, 4, 6, 8, 9]
#对列表进行倒序排序
result = sorted(list1, reverse=True)
print(result) #[9, 8, 6, 4, 3, 1, 0]
#自定义排序规则
w = ['qwer','ttrtt','tgb','l']
re_w = sorted(w, key=len)
print(re_w) #['l', 'tgb', 'qwer', 'ttrtt']
#字典排序依据键
data = {'a': 5, 'n': 30, 'g': 6}
data_re = sorted(data.items())
print(data_re) #[('a', 5), ('g', 6), ('n', 30)]
#字典排序依据值
data = {'a': 5, 'n': 3, 'g': 6}
data_re = sorted(data.items(), key=lambda x : x[1])
print(data_re)#[('n', 3), ('a', 5), ('g', 6)]
#元组列表排序
students_scores = [('Alice', 98), ('Bob', 89), ('Charlie', 92)]
tuple_re = sorted(students_scores, key=lambda x:x[1])
print(tuple_re) #[('Bob', 89), ('Charlie', 92), ('Alice', 98)]
#all函数
'''
all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。
元素除了是 0、空、None、False 外都算 True。
all(iterable)
iterable -- 元组或列表。
'''
#all函数使用实例
re_all = all(['a', 'b', 'c', 'd']) # 列表list,元素都不为空或0
print(re_all) #True
re_all = all([0, 1, 2, 3]) # 列表list,存在一个为0的元素
print(re_all) #False
re_all = all(('a', 'b', 'c', 'd')) # 元组tuple,元素都不为空或0
print(re_all) #True
re_all = all(('a', 'b', '', 'd')) # 元组tuple,存在一个为空的元素
print(re_all) #False
#any函数
'''
any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。
元素除了是 0、空、FALSE 外都算 TRUE。
'''
#any函数实例
any(['a', 'b', 'c', 'd']) # 列表list,元素都不为空或0
# True
any(['a', 'b', '', 'd']) # 列表list,存在一个为空的元素
# True
any([0, '', False]) # 列表list,元素全为0,'',false
# False
any(('a', 'b', 'c', 'd')) # 元组tuple,元素都不为空或0
# True
any(('a', 'b', '', 'd')) # 元组tuple,存在一个为空的元素
# True
any((0, '', False)) # 元组tuple,元素全为0,'',false
# False
any([]) # 空列表
# False
any(()) # 空元组
# False

被折叠的 条评论
为什么被折叠?



