按元素数拆分子列表中的列表

Jua*_*blo 0 python split list

在python中,如果我有元素列表

l = ['a', 'b', 'c', 'd', 'e', 'f']
Run Code Online (Sandbox Code Playgroud)

和一个数字列表

n = [2, 1, 3]
Run Code Online (Sandbox Code Playgroud)

我如何l按数字拆分列表n

并获取此列表列表

[['a', 'b'], ['c'], ['d', 'e', 'f']]
Run Code Online (Sandbox Code Playgroud)

DSM*_*DSM 7

你可以使用islice:

>>> from itertools import islice
>>> l = ['a', 'b', 'c', 'd', 'e', 'f']
>>> n = [2, 1, 3]
>>> it = iter(l)
>>> out = [list(islice(it, size)) for size in n]
>>> out
[['a', 'b'], ['c'], ['d', 'e', 'f']]
Run Code Online (Sandbox Code Playgroud)


VHa*_*sop 6

它有点混淆,但仍然:

ll = [[l.pop(0) for _ in range(k)] for k in n]
Run Code Online (Sandbox Code Playgroud)

请注意,此遍历不会因为pop()thingy而保持列表完整.