python 内置函数的应用-数据分组
对容器list进行分组:
使用场景:
- 容器list数据较多,导致代码运行时,内存溢出;
- 需要对数据进行分组;
代码实例:
def list_of_groups(list_info, per_len):
"""
group the list
:param list_info:
:param per_len:
:return:
"""
list_of_group = zip(*(iter(list_info), ) * per_len )
end_list = [list(i) for i in list_of_group]
count = len(list_info) % per_len
end_list.append(list_info[-count:]) if count != 0 else end_list
return end_list
if __name__ == '__main__':
print(list_of_groups([1,2,3,4], 2))
结果:
代码分析:
核心代码: zip(*(iter(list_info), ) * per_len )
内置函数iter() 将容器list变为一个迭代器对象,减少内存,
同时,根据需要将list容器对象复制per_len 个(虽然复制成了per_len个, 但是在python中是同一个对象),在使用zip()
函数时,对象迭代per_len次是同一个对象,从而将数据按长度per_len进行分组。