根据另一个列表中的数字将列表拆分为多个列表

Far*_*nli 2 python list

假设我有两个列表:

A = [15,2,3,42,5,6,7,82,94,12,1,21,2,3,4,5,5,3,2,2,22,3,4,5,6,6,5........]  # len(A) = 65
B = [15, 20, 4, 11, 12, 3]
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,列表 B 中的数字之和等于 65,这也是列表 A 的长度。

我想要做的是根据列表 B 中的数字将列表 A 拆分为列表,例如列表的第一个列表包含 15 个元素,第二个列表包含 20 个元素,第三个列表包含 4 个元素等。我正在等待您的答案。提前致谢。

我尝试了一些事情但无法实现我想要的。

wim*_*wim 5

为此,您可以使用itertools中的一些方便的部分:

from itertools import pairwise, accumulate
from operator import add
A_split = [A[i:j] for i, j in pairwise(accumulate([0] + B, add))]
Run Code Online (Sandbox Code Playgroud)

如果您出于某种原因不想使用 itertools,使用普通的旧 for 循环也很简单:

A_split = []
for n in reversed(B):
    A_split.append(A[-n:])
    del A[-n:]
A_split.reverse()
Run Code Online (Sandbox Code Playgroud)