栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【过滤、匿名函数、排序】学习笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【过滤、匿名函数、排序】学习笔记

过滤

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表(迭代器)。

filter(function, iterable)
function – 函数
iterable – 可迭代对象
将可迭代对象的每个元素作为参数传递给函数,根据函数的返回值(True 或 False)进行判断,将返回 True 的元素放到新列表(迭代器)中。

先设计判断函数:

def is_int(putin: Union[int, str]):
    """ 判断输入数据是否为int类型 """
    return isinstance(putin, int)

再将判断函数作为参数传递给过滤函数:

test_list = ["A", 3, "B", 1, 3]
print(list(filter(is_int, test_list)))

执行结果:

[3, 1, 3]
匿名函数

匿名函数,顾名思义, 无函数名的函数

python 支持使用 lambda 表达式来创建匿名函数
对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,lambda 可以不需要专门定义一个函数然后再写调用,用于简化代码

以下内容可以实现与上面判断函数相似的功能:

(lambda putin: isinstance(putin, int))(需要判断的元素)

实际使用:

test_list = ["A", 3, "B", 1, 3]
for item in test_list:
    print(f"{item} 是 int 型数据? ---> {(lambda putin: isinstance(putin, int))(item)}")

执行结果:

A 是 int 型数据? ---> False
3 是 int 型数据? ---> True
B 是 int 型数据? ---> False
1 是 int 型数据? ---> True
3 是 int 型数据? ---> True
排序

sorted() 函数对所有可迭代的对象进行排序操作

sorted(iterable, key=None, reverse=False)
iterable – 可迭代对象
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数取自于可迭代对象,指定可迭代对象中的一个元素来进行排序
reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)

实际使用:

sorted_list = [2, 1, 7, 3, 4]
print(sorted(sorted_list, key=None, reverse=False))

执行结果:

[1, 2, 3, 4, 7]
综合使用
test_list = ["A", 3, "B", 1, 3]
print(sorted(filter(lambda putin: isinstance(putin, int), test_list), key=lambda x: x))  # key=lambda x: x 表示按 x 本身	

执行结果:

[1, 3, 3]
完整代码
# -*- coding: utf-8 -*-
from typing import Union


def is_int(putin: Union[int, str]):
    """ 判断输入数据是否为int类型 """
    return isinstance(putin, int)


"""
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表(迭代器)。

filter(function, iterable)
    function -- 函数
    iterable -- 可迭代对象
    将可迭代对象的每个元素作为参数传递给函数,根据函数的返回值(True 或 False)进行判断,将返回 True 的元素放到新列表(迭代器)中。
"""
test_list = ["A", 3, "B", 1, 3]
print("filter()测试:")
print(list(filter(is_int, test_list)))

"""
python 使用 lambda 表达式来创建匿名函数(顾名思义, 无函数名的函数)

对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,lambda 可以不需要专门定义一个函数然后再写调用,用于简化代码
"""
print("rnlambda测试:")
for item in test_list:
    print(f"{item} 是 int 型数据? ---> {(lambda putin: isinstance(putin, int))(item)}")

"""
sorted() 函数对所有可迭代的对象进行排序操作

sorted(iterable, key=None, reverse=False)
    iterable -- 可迭代对象
    key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数取自于可迭代对象,指定可迭代对象中的一个元素来进行排序
    reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)
"""
sorted_list = [2, 1, 7, 3, 4]
print("rnsorted():")
print(sorted(sorted_list, key=None, reverse=False))

"""
综合使用
"""
print("rn综合测试:")
print(sorted(filter(lambda putin: isinstance(putin, int), test_list), key=lambda x: x))  # key=lambda x: x 表示按 x 本身

执行结果:

filter()测试:
[3, 1, 3]

lambda测试:
A 是 int 型数据? ---> False
3 是 int 型数据? ---> True
B 是 int 型数据? ---> False
1 是 int 型数据? ---> True
3 是 int 型数据? ---> True

sorted():
[1, 2, 3, 4, 7]

综合测试:
[1, 3, 3]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/307855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号