在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)
你可以使用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)
它有点混淆,但仍然:
ll = [[l.pop(0) for _ in range(k)] for k in n]
Run Code Online (Sandbox Code Playgroud)
请注意,此遍历不会因为pop()
thingy而保持列表完整.