Python学习笔记之高阶函数

62 次浏览 13 分钟阅读 0 个喜欢
# 高阶函数 
# 内置 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]

# 内置函数