Добавить элементы в список в зависимости от размера подсписка python - PullRequest
0 голосов
/ 12 января 2020

У меня есть список записей:

List X: 
[[1, 1, 'D'],
 [2, 5, 'C'],
 [6, 22, 'S'],
 [23, 57, 'C'],
 [58, 59, 'S'],
 [60, 62, 'C'],
 [63, 64, 'S'],
 [65, 76, 'C'],
 [77, 77, 'S'],
 [78, 79, 'C'],
 [80, 96, 'S'],
 [97, 105, 'C'],
 [106, 132, 'S'],
 [133, 134, 'C'],
 [135, 137, 'S'],
 [138, 150, 'C'],
 [151, 169, 'S'],
 [170, 173, 'C'],
 [174, 174, 'D']...

У меня есть другой список, который содержит набор целых чисел:

List Y: 
[18,
 3,
 1,
 3,
 4,
 8,
 1,
 1,
 3,
 12,
 13,
 13,
 23,
 10,
 10,
 5,
 1,
 4...

Я хочу создать список z подсписков из список X на основе размеров, указанных целыми числами в списке Y.

Например:

Первые 18 записей из списка X будут подсписком списка Z. Следующие 3 записи из списка X будет подсписком списка Z. Следующие 1 записи из списка X будут подсписком списка Z и так далее.

Таким образом, конечный результат будет выглядеть примерно так:

List z: 

[[[1, 1, 'D'],
 [2, 5, 'C'],
 [6, 22, 'S'],
 [23, 57, 'C'],
 [58, 59, 'S'],
 [60, 62, 'C'],
 [63, 64, 'S'],
 [65, 76, 'C'],
 [77, 77, 'S'],
 [78, 79, 'C'],
 [80, 96, 'S'],
 [97, 105, 'C'],
 [106, 132, 'S'],
 [133, 134, 'C'],
 [135, 137, 'S'],
 [138, 150, 'C'],
 [151, 169, 'S'],
 [170, 173, 'C']], [[174, 174, 'D'],
 [175, 316, 'S'],
 [317, 318, 'C']], [[319, 463, 'S']]...

1 Ответ

1 голос
/ 12 января 2020

Это можно сделать, добавив элементы итеративно в новый список:

X = [[1, 1, 'D'],
     [2, 5, 'C'],
     [6, 22, 'S'],
     [23, 57, 'C'],
     [58, 59, 'S'],
     [60, 62, 'C'],
     [63, 64, 'S']]
Y = [1, 2, 3]

Z, c = [], 0
for n in Y:
    Z.append(X[c: c + n])
    c += n
...