有没有一种方法可以在单行for循环中增加变量?

时间:2020-08-26 20:21:43

标签: python for-loop

给出以下定义

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]]

2 个答案:

答案 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]]