【python可迭代对象】使用类的静态方法实现自定义可迭代对象函数

"""

    可迭代对象工具模块
"""
class IterableHelper:

    @staticmethod
    def find_all(func_condition,iterable):
        """
            在可迭代对象中查找所有满足条件的元素 完成filter()高阶内置函数的功能
        :param func_condition: 查找条件函数
        :param iterable: 可迭代对象
        :return: 生成器对象
        """
        for item in iterable:
            if func_condition(item):
                yield item

    @staticmethod
    def get_max(iterable,func_condition):
        """
            根据条件在可迭代对象中获取最大的元素 实现max()函数的功能
        :param iterable: 可迭代对象
        :param func_condition: 指定条件
        :return: 最大的元素对象
        """
        max_value = iterable[0]
        for i in range(1,len(iterable)):
            # if max_value.face_score < iterable[i].face_score
            # lambda item: item.height
            if func_condition(max_value) < func_condition(iterable[i]):
                max_value = iterable[i]
        return max_value

    @staticmethod
    def get_min(iterable,func_condition):
        """
            根据条件在可迭代对象中获取最小的元素 实现min()函数的功能
        :param iterable: 可迭代对象
        :param func_condition: 指定条件
        :return: 最小的元素对象
        """
        min_value = iterable[0]
        for i in range(1,len(iterable)):
            # if min_value.face_score < iterable[i].face_score
            # lambda item: item.height
            if func_condition(min_value) > func_condition(iterable[i]):
                min_value = iterable[i]
        return min_value

    @staticmethod
    def first(iterable,func_condition):
        """
            可迭代对象中符合条件的第一个元素
        :param iterable: 可迭代对象
        :param func_condition: 指定条件
        :return: 第一个满足条件的元素对象
        """
        for item in iterable:
            if func_condition(item):
                return item


    @staticmethod
    def get_count(iterable,func_condition):
        """
            在可迭代对象中,获取满足条件的元素数量
        :param iterable: 可迭代对象
        :param func_condition: 条件
        :return: 返回Int数量
        """
        count = 0
        for item in iterable:
            if func_condition(item):
                count += 1

        return count

    @staticmethod
    def is_exists(iterable,func_condition):
        """
            判断可迭代对象中是否存在某个条件的对象
        :param iterable:
        :param func_condition:
        :return: True/False
        """
        for item in iterable:
            if func_condition(item):
                return True

        return False

    @staticmethod
    def sum(iterable,func_condition):
        """
            根据指定逻辑叠加可迭代对象中的元素
        :param iterable: 需要累加的数据
        :param func_condition: 累加的逻辑
        :return: 数值类型,累加结果
        """
        sum_value = 0
        for item in iterable:
            sum_value += func_condition(item)

        return sum_value

    @staticmethod
    def detele_all(iterable,func_condition):
        """
            根据条件删除多个元素
        :param iterable:
        :param func_condition:
        :return: 删除的元素数量
        """
        count = 0
        for item in range(len(iterable)-1,-1,-1):  # 正向索引删除会导致后面元素索引报错
            if func_condition(iterable[item]):
                del iterable[item]
                count += 1
        return count

    @staticmethod
    def order_by(iterable,func_condition):
        """
            根据条件升序排列
        :param iterable:
        :param func_condition: 比较条件
        :return: 升序结果
        """
        for i in range(len(iterable)-1):
            for j in range(i+1,len(iterable)):
                if func_condition(iterable[i])>func_condition(iterable[j]):
                    iterable[i], iterable[j] = iterable[j], iterable[i]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值