# 高阶函数
# 内置 map reduce sorted filter
# ## map
'''
map(func, iterable)
功能:把 iterable 中的 一个一个的拿到 func 函数中 如果符合条件就存在迭代器中
参数:
func: 内置函数 或者 自定义函数
iterable: 可迭代性数据
容器类型数据,range(),迭代器
返回值:
'''
# example 获取给定列表的整数型
listvar = ['1','2','3']
print(listvar)
# 常规写法
N = 0
for i in listvar:
listvar[N] = int(i)
N += 1
# append(可以向list中添加元素)
# listvar.append(66)
print(listvar, '<===>')
# 将list 转为iter接口类型
listvar = [1,2,3,4,5]
from collections.abc import Iterable, Iterator
tempInt = map(int, listvar)
print(isinstance(tempInt, Iterable))
print(isinstance(tempInt, Iterator))
print(tempInt)
# 计算给定列表的2次幂
listtemp = [1,2,3,4,5]
listtemp2 = []
def cimi (x) :
return x**2
listtemp2 = map(cimi,listtemp)
for i in listtemp2:
print(i)
# reduce 函数
'''
reduce(func, iterable)
功 能: 把可迭代数据的前前个值放到func中进行运算,计算的结果在和iterable中的第三个值进行运算,
以此类推不停的拿结果和iterable中的下一个数据进行运算,知道结束
参 数: func 内置或自定义函数,iterable 可迭代数据 (容器类型数据,迭代器,range对象)
返回值: 最后的结果
'''
# 将 listvar 转为 整数。12345
# 普通写法
listvar = [1,2,3,4,5]
strvar = ''
for i in listvar:
strvar += str(i)
print(strvar, type(int(strvar))) # 12345 <class 'int'>
# reduce 写法
# 引入reduce
from functools import reduce
def func (a, b) :
return a*10+b
res = reduce(func, listvar)
print(res, type(res)) # 12345 <class 'int'>
# 在不使用int的情况下把 '987' (str) 变为 987 (int)
listvar = '987'
# sorted
'''
sorted(iterable, reverse = False, key = 函数)
功能:sorted对序列进行排序
参数:
iterable:可迭代数据(容器类型数据,迭代器,range)
reverse:是否反转
key:内置或自定义的函数
返回值:
返回排序后的结果
'''
# example
tuplevar = (1,3,-5,-2,4)
res = sorted(tuplevar) # [1, 2, 3, 4, 5] 默认# 高阶函数
# 内置 map reduce sorted filter
# ## map
'''
map(func, iterable)
功能:把 iterable 中的 一个一个的拿到 func 函数中 如果符合条件就存在迭代器中
参数:
func: 内置函数 或者 自定义函数
iterable: 可迭代性数据
容器类型数据,range(),迭代器
返回值:
'''
# example 获取给定列表的整数型
listvar = ['1','2','3']
print(listvar)
# 常规写法
N = 0
for i in listvar:
listvar[N] = int(i)
N += 1
# append(可以向list中添加元素)
# listvar.append(66)
print(listvar, '<===>')
# 将list 转为iter接口类型
listvar = [1,2,3,4,5]
from collections.abc import Iterable, Iterator
tempInt = map(int, listvar)
print(isinstance(tempInt, Iterable))
print(isinstance(tempInt, Iterator))
print(tempInt)
# 计算给定列表的2次幂
listtemp = [1,2,3,4,5]
listtemp2 = []
def cimi (x) :
return x**2
listtemp2 = map(cimi,listtemp)
for i in listtemp2:
print(i)
# reduce 函数
'''
reduce(func, iterable)
功 能: 把可迭代数据的前前个值放到func中进行运算,计算的结果在和iterable中的第三个值进行运算,
以此类推不停的拿结果和iterable中的下一个数据进行运算,知道结束
参 数: func 内置或自定义函数,iterable 可迭代数据 (容器类型数据,迭代器,range对象)
返回值: 最后的结果
'''
# 将 listvar 转为 整数。12345
# 普通写法
listvar = [1,2,3,4,5]
strvar = ''
for i in listvar:
strvar += str(i)
print(strvar, type(int(strvar))) # 12345 <class 'int'>
# reduce 写法
# 引入reduce
from functools import reduce
def func (a, b) :
return a*10+b
res = reduce(func, listvar)
print(res, type(res)) # 12345 <class 'int'>
# 在不使用int的情况下把 '987' (str) 变为 987 (int)
listvar = '987'
# sorted
'''
sorted(iterable, reverse = False, key = 函数)
功能:sorted对序列进行排序
参数:
iterable:可迭代数据(容器类型数据,迭代器,range)
reverse:是否反转
key:内置或自定义的函数
返回值:
返回排序后的结果
'''
# example
tuplevar = (1,3,-5,-2,4)
res = sorted(tuplevar) # [1, 2, 3, 4, 5] 默认从小到大升序排列
print(res)
res = sorted(tuplevar, reverse = True)
print(res) # [5, 4, 3, 2, 1] 对序列进行倒序排列
# 使用内置函数排序
res = sorted(tuplevar, key = abs) # [1, -2, 3, 4, -5]
print(res)从小到大升序排列
print(res)
res = sorted(tuplevar, reverse = True)
print(res) # [5, 4, 3, 2, 1] 对序列进行倒序排列
# 使用内置函数排序
res = sorted(tuplevar, key = abs) # [1, -2, 3, 4, -5]
print(res)
# filter
'''
filter(func, iterable)
功能: 过滤数据
return False 舍弃数据
return True 保留数据
参数:
func: 自定义函数
iterable: 可迭代数据(容器类型数据,range,迭代器)
返回值:
迭代器
'''
from collections.abc import Iterable, Iterator
listvar = [1,2,3,4,5,6,7,8]
def oushu(n):
return True if n % 2 != 1 else False
res = filter(oushu, listvar)
print(isinstance(res, Iterator)) # True
print(list(res)) # [2, 4, 6, 8]
# 改写上述案例
print(list(filter(lambda n: True if n % 2 != 1 else False, listvar))) # [2, 4, 6, 8]
# 内置函数