python - 在python中随机分割一个给定块大小的列表
问题描述
我想编写一个函数,它返回一个随机分割的块列表,给定每个块的大小列表。例如,假设我有一个从 0 到 9 的唯一整数列表
lst = list(range(10))
我想分成 4 个大小为 1、2、2 和 5 的块,因此该函数应采用如下输入变量sizes
:
my_func(lst, sizes=[1, 2, 2, 5])
我希望该函数返回类似
[[3], [1, 7], [2, 4], [0, 5, 6, 8, 9]]
如果输入sizes = [5, 1, 4]
,我希望函数按顺序返回一些东西
[[1, 3, 4, 6, 8], [9], [0, 2, 5, 7]]
有什么建议么?
解决方案
我的方法是使用random.shuffle
然后经过洗牌的数组!
import random
def my_func(lst, sizes):
random.shuffle(lst)
ret = []
pointer = 0
for s in sizes:
ret.append(lst[pointer:pointer+s])
pointer+=s
return ret
lst = list(range(10))
print(my_func(lst, sizes = [1, 2, 2, 5]))
print(my_func(lst, sizes = [5, 1, 4]))
[[5], [6, 7], [4, 0], [8, 3, 9, 2, 1]]
[[5, 2, 4, 3, 0], [8], [6, 7, 9, 1]]
推荐阅读
- python - Django:objects.raw() 在使用 Postgresql 时显示错误,但在使用 sqlite3 数据库时工作正常
- docker - 未列出 Docker 容器
- php - PHP 创建 Zip 文件
- powershell - 在控制台上以编程方式更改字体类型和大小
- php - Laravel 媒体存储最佳实践
- numpy - NumPy:如何检查非拥有数组的前导维度?
- python - 如何获取气体量 web3py?
- python - discord bot 脚本在 vps 中不能正常工作?
- windows - 批处理命令删除任务计划程序中指定目录中的每个目录和文件
- azure-devops - 强制取消正在运行的 Azure 管道