目录
????前言
思路
类型一:数字
实现效果
代码实现
类型二:元组
实现效果
代码实现
????前言
博主最近工作中刚好用到数据分箱操作(对相同数据进行遍历比较,避免了全部遍历比较,大大减少了电脑IO次数,提高程序运行速度),翻了很多博文都没有找到解决方法,写一下我自己的解决思路!!!
思路
先给定 last 为列表第一个(并存入temp列表),将后面的数据从第二个开始与 last 比较,如果相同存入 temp 中。
当不相同时,则将 last 切换为 不同的那个数(并存入temp),并将 temp列表 放入一个空列表中。
类型一:数字
实现效果
[1,1,1,2,2,2,3,3,4,4,5,5,5,5,5] # 转变为 [[1, 1, 1], [2, 2, 2], [3, 3], [4, 4], [5, 5, 5, 5, 5]]
代码实现
box = [1,1,1,2,2,2,3,3,4,4,5,5,5,5,5] last = box[0] temp = [box[0]] box_list = [temp] for a in box[1::]: if a == last: temp.append(a) else: last = a temp = [a] box_list.append(temp) print(box_list) # [[1, 1, 1], [2, 2, 2], [3, 3], [4, 4], [5, 5, 5, 5, 5]] # 实现按每一个分箱列表遍历数据(而不用全部遍历) for boxs in box_list: for i in boxs: print(i)
类型二:元组
实现效果
box = [('小黑','20','四川'),('小黑','21','北京'),('张三','18','上海'),('张三','22','上海'),('张三','30','北京'),('李四','10','广州')] # 实现把名字相同的元组放入一个列表 [[('小黑', '20', '四川'), ('小黑', '21', '北京')], [('张三', '18', '上海'), ('张三', '22', '上海'), ('张三', '30', '北京')], [('李四', '10', '广州')]]
代码实现
box = [('小黑','20','四川'),('小黑','21','北京'),('张三','18','上海'),('张三','22','上海'),('张三','30','北京'),('李四','10','广州')] last = box[0][0] temp = [box[0]] box_list = [temp] for a in box[1::]: if a[0] == last: temp.append(a) else: last = a[0] temp = [a] box_list.append(temp) print(box_list) # 实现按每一个分箱列表遍历数据(而不用全部遍历) for boxs in box_list: for i in boxs: print(i[0]) # 0取的姓名,1取年龄,3取地址