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进行分组。

posted @ 2022-03-24 14:07  酷酷的排球  阅读(98)  评论(0编辑  收藏  举报