曲速引擎 Python等长度分割列表算法

partition_list函数的设计目的是将一个列表分割成多个子列表,其中每个子列表的长度尽可能相等。

在批处理任务和并行计算在写并发的时候通常要将数据内容写入执行函数当中,因此需要将一个大的数据集分割成多个部分,以便在多个处理器或机器上并行处理时,这个函数可以帮助均匀地分配数据。

输入数据:

lists = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

得到结果:

lists = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]]

算法


#本文由 曲速引擎(Warp Drive)个人博客 曲速引擎(Warp Drive)CSDN技术博客 创作,转载请说明出处谢谢
#https://blog.csdn.net/siberiaWarpDrive
#https://www.exp-9.com/
def partition_list(lists, number):
    # 计算每个子列表的目标长度,即原列表长度除以4
    children_list_len = int(len(lists) / 4)
    # 使用 zip 和 iter 创建一个迭代器,该迭代器每次返回长度为 children_list_len 的元组
    list_of_groups = zip(*(iter(lists),) * children_list_len)
    # 将元组转换为列表,并将这些列表收集到 data_list 中
    data_list = [list(i) for i in list_of_groups]
    # 计算不能均匀分配到子列表中的元素数量
    count = len(lists) % children_list_len
    # 如果有剩余元素,将它们作为一个新的子列表添加到 data_list 中
    if count != 0:
        data_list.append(lists[-count:])
    return data_list

if __name__ == '__main__':
    lists = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
    success_lists = partition_list(lists, 4)
    for i in success_lists:
        print(i)

本文由 曲速引擎(Warp Drive)个人博客 曲速引擎(Warp Drive)CSDN技术博客 创作,转载请说明出处谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值