给出以下定义
layerData = [3, 3, 2, 1, 1]
bias = [0.47, -0.45, 0.31, -0.09, 0.21 ,-0.18, 0.14, -0.45, -0.39, -0.14]
从bias
列表的开头开始,对于N
中的每个元素layerData
,我想从N
中提取下一个bias
元素,并将将该列表附加到结果中
这是应该输出的内容:
[[0.47, -0.45, 0.31], [-0.09, 0.21, -0.18], [0.14, -0.45], [-0.39], [-0.14]]
答案 0 :(得分:5)
您可以使用迭代器-每次需要一个值时都对其调用next
。
>>> bias = [0.47, -0.45, 0.31, -0.09, 0.21 ,-0.18, 0.14, -0.45, -0.39, -0.14]
>>> layerData = [3, 3, 2, 1, 1]
>>> it = iter(bias)
>>> [[next(it) for _ in range(n)] for n in layerData]
[[0.47, -0.45, 0.31], [-0.09, 0.21, -0.18], [0.14, -0.45], [-0.39], [-0.14]]
答案 1 :(得分:3)
使用itertools.accumulate
来获得layerData
的总投放量。这样可以将子列表直接提取为切片而不是单个项目:
>>> from itertools import accumulate
>>>
>>> layerData = [3, 3, 2, 1, 1]
>>> bias = [0.47, -0.45, 0.31, -0.09, 0.21 ,-0.18, 0.14, -0.45, -0.39, -0.14]
>>>
>>> [bias[i-n:i] for i, n in zip(accumulate(layerData), layerData)]
[[0.47, -0.45, 0.31], [-0.09, 0.21, -0.18], [0.14, -0.45], [-0.39], [-0.14]]