python学习-day9内置函数(高阶)

视频链接:https://www.bilibili.com/video/BV1SE411N7Hi?p=59

知识链接:https://guobaoyuan.gitee.io/new_book/Python/13-1%20%E5%86%85%E7%BD%AE%E5%87%BD%E6%95%B0%E4%BA%8C.html

以下内容仅供自己学习使用,侵删

#!/usr/bin/env python 
# -*- coding:utf-8 -*-

#-----------------------高阶函数-----------------------------
# reversed(可迭代对象)--反转
# filter(过滤规则的函数,可迭代对象)--过滤
# map(映射要执行的函数,可迭代对象,可迭代对象,可迭代对象)--映射
# sorted(可迭代对象,key=排序规则)--排序
# max()--求最大值

# filter()--过滤
# filter(函数就是写过滤,可迭代对象)

# lst=[1,2,3,4,5,6,7,8]
# def func(x):#这个func必须有一个参数
#     return x>4
# print(list(filter(func,lst)))#[5, 6, 7, 8]
#
# """
# 高阶函数帮我们实现了一个for循环
# 模拟一个filter的原理
# """
# lst=[1,2,3,4,5,6,7,8]
# def foo(x):#这个func必须有一个参数
#     return x>4#为真返回True,否则False
# def filter(foo,iter):
#     """
#
#     :param func:
#     :param iter:
#     :return:
#     """
#     new_lst = []
#     for i in iter:
#
#         if func(i)==True:#foo(i)
#             new_lst.append(i)
#     return new_lst
# filter(foo,lst)

lstt=[1,2,3,4,5,6,7]

print('lstt:', list(filter(lambda x:x<3,lstt)))

lst=["三国演义","水浒传","红楼梦","西游记","白蛇传","还珠格格","聊斋"]
#过滤掉长度小于3个字的
#过滤出长度大于2个字的
def func(x):
    return len(x)>=3
print(list(filter(func,lst)))

print(list(filter(lambda x:len(x)>3,lst)))
print(list(filter(lambda x:len(x)>2,lst)))

#过滤出年龄大于17的
lst = [{'id':1,'name':'alex','age':18},
        {'id':1,'name':'wusir','age':17},
        {'id':1,'name':'taibai','age':16},]
print(list(filter(lambda x:x["age"]>=17,lst)))
#[{'id': 1, 'name': 'alex', 'age': 18}, {'id': 1, 'name': 'wusir', 'age': 17}]

print("-------map--------")
#map(函数,可迭代对象)映射
#高阶函数的本质是for循环
lst=[1,2,3]
lst1=[1,2,3]
lst2=[1,2,3]
print(list(map(lambda x,y,z:x+y+z,lst,lst1,lst2)))#[3, 6, 9]

print(list(map(str,lst)))#['1', '2', '3']
print(list(map(lambda x:str(x),lst)))#['1', '2', '3']
'''类似于
for i in lst:
    str(i)
'''

print("-----sorted--------")#排序
#sorted(可迭代对象,key=排序规则(函数))
#本质是for循环,每循环一次,调用排序规则,记录,最后进行排序
lst=[1,2,3,4,111,6,7,8,89]
lst1=[1,2,3,123,12,4312,3132,-1111]
print(sorted(lst,reverse=True))#排序 [111, 89, 8, 7, 6, 4, 3, 2, 1]
print(sorted(lst1,key=lambda x:abs(x)))#[1, 2, 3, 12, 123, -1111, 3132, 4312]
print(sorted(lst1,key=abs))#[1, 2, 3, 12, 123, -1111, 3132, 4312]
lst=["春光灿烂猪八戒","红楼梦","康熙王朝","搭错车","上错花轿嫁对郎"]
print(sorted(lst,key=len))#['红楼梦', '搭错车', '康熙王朝', '春光灿烂猪八戒', '上错花轿嫁对郎']

dic={1:'abc',3:'ck',2:'boos'}
print(sorted(dic))#[1, 2, 3]
print(sorted(dic.values()))#['abc', 'boos', 'ck']
print(sorted(dic.values(),key=len))#['ck', 'abc', 'boos']

lst=[{'id':1,'name':"alex",'age':18},
     {'id': 2, 'name': "wusir", 'age': 17},
     {'id': 3, 'name': "taibei", 'age': 16}]
#通过年龄排序
print(sorted(lst,key=lambda x:x['age']))#升序,如果reverse=True,则降序
#[{'id': 3, 'name': 'taibei', 'age': 16}, {'id': 2, 'name': 'wusir', 'age': 17}, {'id': 1, 'name': 'alex', 'age': 18}]
#通过id降序排
print(sorted(lst,key=lambda x:x['id'],reverse=True))
#[{'id': 3, 'name': 'taibei', 'age': 16}, {'id': 2, 'name': 'wusir', 'age': 17}, {'id': 1, 'name': 'alex', 'age': 18}]


print("--------max,min-------")
print(max([1,2,3,4,56,-1212,7,8,9,9],key=str))#9,对比ascii码,'
print(min([1,2,3,4,56,-1212,7,8,9,9],))#-1212
print(min([1,2,3,4,56,-1212,7,8,9,9],key=abs))#1

print("-----reduce------")
lst=[1,2,3,4,5]
from functools import reduce
def func(x,y):
    return x+y
print(reduce(func,lst))
#1+2的结果给x,3给y,以此类推

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值