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)
