Понимание списка с помощью islice
from itertools import islice
l1 = [2,4,3]
l2 = [4,5,6,7,8,9,10,11,12]
il2 = iter(l2)
l = [list(islice(il2, x)) for x in l1]
print(l)
# [[4, 5], [6, 7, 8, 9], [10, 11, 12]]
Производительность
Тестирование пяти методов, опубликованных здесь, с использованием timeit в наборе данных l1, l2 в блокноте Jupyter, с предварительно загруженными библиотеками. Pok Fung Chan пост был самым быстрым методом.
Method 1. pok fung chan -- 100000 loops, best of 3: 2.17 µs per loop
Method 2: ncica -- 100000 loops, best of 3: 2.93 µs per loop
Method 3: darrylg -- 100000 loops, best of 3: 4.02 µs per loop
Method 4: RoadRunner -- 100000 loops, best of 3: 6.38 µs per loop
Method 5: Rakeesh -- 100000 loops, best of 3: 8.76 µs per loop