1 """
2 针对列表的自定义工具
3 """
4
5
6 class ListHelper:
7
8 @staticmethod
9 def find_all(target, func_condition):
10 """
11 查找列表中满足条件的所有元素
12 :param target: 列表
13 :param func_condition: 条件
14 函数/方法类型
15 -- 参数:列表中的元素
16 -- 返回值:是否满足条件bool值
17 :return:
18 """
19 for item in target:
20 if func_condition(item):
21 yield item
22
23 @staticmethod
24 def first(target, func_condition):
25 """
26 查找列表中满足条件的第一个元素
27 :param target:
28 :param func_condition:
29 :return:
30 """
31 for item in target:
32 if func_condition(item):
33 return item
34
35 @staticmethod
36 def select(target, func_condition):
37 """
38 筛选列表中指定条件的数据
39 :param target:
40 :param func_condition:
41 :return:
42 """
43 for item in target:
44 yield func_condition(item)
45
46 @staticmethod
47 def sum(target, func_condition):
48 """
49 计算列表中指定条件的所有元素和
50 :param target:
51 :param func_condition:
52 :return:
53 """
54 sum_value = 0
55 for item in target:
56 # sum_value += xxx(item)
57 sum_value += func_condition(item)
58 return sum_value
59
60 @staticmethod
61 def last(target, func_condition):
62 """
63 按条件找最后一个
64 :param target:
65 :param func_condition:
66 :return:
67 """
68 for i in range(len(target) - 1, -1, -1):
69 if func_condition(target[i]):
70 return target[i]
71
72 @staticmethod
73 def get_count(target, func_condition):
74 """
75 获取满足一定条件的元素个数
76 :param target: 要选择的列表
77 :param func_condition: 条件
78 传入函数/方法
79 参数:列表中的元素
80 返回值:满足条件的元素总数
81 :return:
82 """
83 count_value = 0
84 for item in target:
85 if func_condition(item):
86 count_value += 1
87 return count_value
88
89 @staticmethod
90 def exists(target, func_condition):
91 """
92 查找列表中是否包含某个元素
93 :param target:列表
94 :param func_condition:
95 :return:bool类型值
96 """
97 for item in target:
98 if func_condition(item):
99 return True
100 return False
101
102 @staticmethod
103 def delete_all(target, func_condition):
104 """
105 删除满足条件的对象
106 :param target:
107 :param func_condition:
108 :return: 删除的个数
109 """
110 del_count = 0
111 for i in range(len(target) - 1, -1, -1):
112 if func_condition(target[i]):
113 del target[i]
114 # target.remove(target[i])
115 del_count += 1
116 return del_count
117
118 @staticmethod
119 def get_max(target, func_condition):
120 """
121 按条件找最大值
122 :param target:
123 :param func_condition:
124 :return:
125 """
126 max_value = target[0]
127 for i in range(1, len(target)):
128 if func_condition(target[i]) > func_condition(max_value):
129 max_value = target[i]
130 return max_value
131
132 @staticmethod
133 def get_min(target, func_condition):
134 """
135 按条件找最小值
136 :param target:
137 :param func_condition:
138 :return:
139 """
140 min_value = target[0]
141 for i in range(1, len(target)):
142 if func_condition(target[i]) < func_condition(min_value):
143 min_value = target[i]
144 return min_value
145
146 @staticmethod
147 def order_by_up(target,func_condition):
148 """
149 对列表进行升序排列
150 :param target:
151 :param func_condition:
152 :return:
153 """
154 for i in range(len(target)-1):
155 for n in range(i+1,len(target)):
156 if func_condition(target[n])<func_condition(target[i]):
157 target[n] ,target[i]=target[i],target[n]
158
159 @staticmethod
160 def order_by_down(target, func_condition):
161 """
162 对列表进行降序排列
163 :param target:
164 :param func_condition:
165 :return:
166 """
167 for i in range(len(target) - 1):
168 for n in range(i + 1, len(target)):
169 if func_condition(target[n]) > func_condition(target[i]):
170 target[n], target[i] = target[i], target[n]
171
172 @staticmethod
173 def sort(target,func_condition):
174 """
175 对列表进行万能排序
176 :param target: 要处理的列表
177 :param func_condition:
178 传入参数两个,分别为两个元素
179 :param reverse:
180 :return: 查看见原列表
181 """
182 for i in range(len(target) - 1):
183 for n in range(i + 1, len(target)):
184 if func_condition(target[n],target[i]):
185 target[n], target[i] = target[i], target[n]