根据Python中的数值数组将列表划分为子集

Chr*_*580 1 python string list set

我有一个list像这样的字符:

s = ['Y', 'U', 'U', 'N', 'U', 'U', 'N', 'N', 'N']
Run Code Online (Sandbox Code Playgroud)

以及以下数组:

t = [2, 4, 3]
Run Code Online (Sandbox Code Playgroud)

我想根据数组划分列表,使得每个子集st[i]都有len(t[i]). 这个例子的结果应该是:

st = [['Y', 'U'], ['U', 'N', 'U', 'U'], ['N', 'N', 'N']]
Run Code Online (Sandbox Code Playgroud)

如果数组 t 是:

t = [5, 2, 2]
Run Code Online (Sandbox Code Playgroud)

那么结果应该是:

st = [['Y', 'U', 'U', 'N', 'U'], ['U', 'N'], ['N', 'N']]
Run Code Online (Sandbox Code Playgroud)

条目为 s 和 t。我尝试插入两个循环,一个用于列表 s,另一个用于数组 t。但它不起作用。我怎样才能实现这个?

blh*_*ing 6

您可以从中创建一个迭代器s,并itertools.islice根据以下中的大小对迭代器进行切片t

from itertools import islice

i = iter(s)
[list(islice(i, l)) for l in t]
Run Code Online (Sandbox Code Playgroud)

这将返回:

[['Y', 'U'], ['U', 'N', 'U', 'U'], ['N', 'N', 'N']]
Run Code Online (Sandbox Code Playgroud)