python - 如何从一维列表或数组初始化子列表的子列表列表?
问题描述
我有一个创建列表列表的函数:
def initialize_master_list(n, h, o):
master_list = []
master_list.append([[0 for i in range(n+1)] for j in range(h)])
master_list.append([[0 for i in range(h+1)] for j in range(o)])
return master_list
这将创建一个列表2
列表,其中第一个是h
长度列表的列表,n+1
第二个是o
长度列表的列表h+1
。此函数将每个最深列表的元素初始化为0
. 在这里,我打印了列表的样子:
N, H, O = 4, 3, 2
ML = initialize_master_list(N, H, O)
print(ML)
[[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]], [[0, 0, 0, 0], [0, 0, 0, 0]]]
而不是0
,我想将这些值初始化为来自一维列表或值数组。这个一维列表的长度(h * n+1) + (o * h+1)
。对于当前示例,长度为(3 * 5) + (2 * 4) = 15 + 8 = 23
.
例如:
GRAB = [round(random.uniform(1, 9),1) for _ in range((H*(N+1))+(O*(H+1)))]
print(GRAB)
[7.4, 5.7, 5.3, 7.1, 2.7, 4.3, 4.1, 7.0, 1.4, 1.4, 2.2, 3.2, 1.6, 8.4, 5.7, 2.0, 4.5, 7.8, 4.1, 5.1, 1.5, 1.6, 1.7]
我该如何初始化ML
按顺序使用这些值进行初始化?
我的预期输出可能是:
ML = initialize_master_list(N, H, O, GRAB)
print(ML)
[[[7.4, 5.7, 5.3, 7.1, 2.7], [4.3, 4.1, 7.0, 1.4, 1.4], [2.2, 3.2, 1.6, 8.4, 5.7]], [[2.0, 4.5, 7.8, 4.1], [5.1, 1.5, 1.6, 1.7]]]
我怎样才能初始化这个列表结构基于N, H, O
?我任意选择的那些值,它们可以是任何值,但我可以假设GRAB
将是我想要初始化列表的确切数字数量。
我最好的想法是制作一个生成器并产生值(而不是0 for i in range...
in initialize_master_list
,next(generator) for i in range...
但这是丑陋的。我希望有一种更简单的方法,不会像那样将它结合在一起。
解决方案
def initialize_master_list(n, h, o, g):
it = iter(g)
master_list = [[[next(it) for i in range(n + 1)] for j in range(h)],
[[next(it) for i in range(h + 1)] for j in range(o)]]
return master_list
N, H, O = 4, 3, 2
GRAB = [7.4, 5.7, 5.3, 7.1, 2.7, 4.3, 4.1, 7.0, 1.4, 1.4, 2.2,
3.2, 1.6, 8.4, 5.7, 2.0, 4.5, 7.8, 4.1, 5.1, 1.5, 1.6, 1.7]
result = initialize_master_list(N, H, O, GRAB)
print(result)
输出
[[[7.4, 5.7, 5.3, 7.1, 2.7], [4.3, 4.1, 7.0, 1.4, 1.4], [2.2, 3.2, 1.6, 8.4, 5.7]], [[2.0, 4.5, 7.8, 4.1], [5.1, 1.5, 1.6, 1.7]]]
推荐阅读
- javascript - valiatorjs 的打字稿导入失败?
- python - 无服务器 AWS Lambda:没有名为“secret_manager”的模块
- java - JVM 类加载器中的可见性原则
- html - 定位元素左右浮动+不可点击的标签
- javascript - 函数未在 nodeJS 类的 setInterval 和 switch/case 中定义
- excel - 将筛选的数据复制到另一个工作簿
- c# - Convert.ToBase64String/Convert.FromBase64String 不返回原始字符串值
- python - Python pandas,按X大小对列进行数据分箱
- powershell - PowerShell 6 在不退出脚本的情况下从 ForEach-Object 循环中中断
- sql-server - 寻找一种特殊的方式加入 SQL 服务器