将列表拆分成随机大小的块的最佳方法是什么?

Bar*_*rry 3 python math list

我有一个数字列表,如[5000,5000,5000,5000,5000,5000]

我需要创建一个函数,将该列表转换为随机大小的较小列表列表,例如

[[5000,5000],[5000,5000,5000],[5000]]

在python中执行此操作的最佳方法是什么?

roi*_*ppi 11

from itertools import islice
from random import randint

def random_chunk(li, min_chunk=1, max_chunk=3):
    it = iter(li)
    while True:
        nxt = list(islice(it,randint(min_chunk,max_chunk)))
        if nxt:
            yield nxt
        else:
            break
Run Code Online (Sandbox Code Playgroud)

演示:

li = [5000, 5000, 5000, 5000, 5000, 5000]

list(random_chunk(li))
Out[45]: [[5000, 5000, 5000], [5000], [5000, 5000]]
Run Code Online (Sandbox Code Playgroud)

这导致(忽略最后一个块)在块之间min_chunk和之间的块大小的均匀分布max_chunk.