Python基礎之自定義工具類


class ListHelper:
    @staticmethod
    def find_all(target, func_condition):
        """
            查找列表中滿足條件的所有元素
        :param target: 列表
        :param func_condition: 條件
            函數/方法類型
            -- 參數:列表中的元素
            -- 返回值:是否滿足條件bool值
        :return:
        """
        for item in target:
            if func_condition(item):
                yield item

    @staticmethod
    def first(target, func_condition):
        """
            查找列表中滿足條件的第一個元素
        :param target:
        :param func_condition:
        :return:
        """
        for item in target:
            if func_condition(item):
                return item

    @staticmethod
    def select(target, func_condition):
        """
            篩選列表中指定條件的數據
        :param target:
        :param func_condition:
        :return:
        """
        for item in target:
            # yield xxx(item)
            yield func_condition(item)

    @staticmethod
    def sum(target, func_condition):
        """
            計算列表中指定條件的所有元素和
        :param target:
        :param func_condition:
        :return:
        """
        sum_value = 0
        for item in target:
            # sum_value += xxx(item)
            sum_value += func_condition(item)
        return sum_value

    @staticmethod
    def last(target,func_condition):
        """
            查找滿足條件的最后一個對象
        :param target:
        :param func_condition:
        :return:
        """
        for i in range(len(target) - 1,-1,-1):
            # if xxx(list01[i]):
            if func_condition(target[i]):
                return target[i]

    @staticmethod
    def get_count(target,func_condition):
        """
            獲取所有滿足條件的對象總數
        :param target:
        :param func_condition:
        :return:
        """
        count_value = 0
        for item in target:
            if func_condition(item):
                count_value += 1
        return count_value

    @staticmethod
    def exists(target,func_condition):
        """
            判斷是否包含滿足條件的對象
        :param target:
        :param func_condition:
        :return:
        """
        for item in target:
            if func_condition(item):
                return True
        return False

    @staticmethod
    def delete_all(target,func_condition):
        """
            刪除滿足條件的所有對象
        :param target:
        :param func_condition:
        :return:
        """
        del_count = 0
        for i in range(len(target) - 1,-1,-1):
            if func_condition(target[i]):
                del target[i]
                del_count += 1
        return del_count

    @staticmethod
    def get_max(target,func_condition):
        """
            獲取指定條件的最大對象(第一個)
        :param target:
        :param func_condition:
        :return:
        """
        max_value = target[0]
        for i in range(1, len(target)):
            # if max_value.hp < target[i].hp:
            if func_condition(max_value) < func_condition(target[i]):
                max_value = target[i]
        return max_value

    @staticmethod
    def order_by(target,func_condition):
        """
            根據指定條件升序排列
        :param target:
        :param func_condition:
        :return:
        """
        for r in range(len(target)-1):
            for c in range(r+1,len(target)):
                # if target[r].hp > target[c].hp:
                if func_condition(target[r]) > func_condition(target[c]):
                    target[r],target[c] = target[c],target[r]

    @staticmethod
    def get_min(target, func_condition):
        """
            獲取指定條件的最小對象(第一個)
        :param target:
        :param func_condition:
        :return:
        """
        min_value = target[0]
        for i in range(1, len(target)):
            # if min_value.hp > target[i].hp:
            if func_condition(min_value) > func_condition(target[i]):
                min_value = target[i]
        return min_value

    @staticmethod
    def order_by_descending(target,func_condition):
        """
            根據指定條件降序排列
        :param target:
        :param func_condition:
        :return:
        """
        for r in range(len(target)-1):
            for c in range(r+1,len(target)):
                if func_condition(target[r]) < func_condition(target[c]):
                    target[r],target[c] = target[c],target[r]

萬能排序法:

  

def sort(target,func_condition):
    """
        萬能排序 
    :param target: 需要排序的數據
    :param func_condition: 排序的邏輯
          func_condition 類型是函數
                         參數是列表中兩個元素
                         返回值是比較的結果
                         方法體是比較的條件
    :return:
    """
    for r in range(len(target) - 1):
        for c in range(r + 1, len(target)):
            if func_condition(target[r],target[c]):
                target[r], target[c] = target[c], target[r]


list01 = [3,34,5,6,8]
sort(list01,lambda e1,e2:e1 < e2)
print(list01)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM