У меня есть эти списки:Попадая индексы последовательных кусков списка
l1 = ["foo","bar","x","y","z","x","y","z","x","y","z"]
l2 = ["foo","bar","w","x","y","z","w","x","y","z","w","x","y","z"]
l3 = ["foo","bar","y","z","y","z","y","z"]
Для каждого из списка выше, я хотел бы получить индексы последовательных кусков от 3 входа и далее. Выход:
l1_indices = [[2,3,4],[5,6,7],[8,9,10]]
l2_indices = [[2,3,4,5],[6,7,8,9],[10,11,12,13]]
l3_indices = [[2,3],[4,5],[6,7]]
Для дальнейшего уточнения, я получил l1_indices
следующим образом:
["foo","bar", "x","y","z", "x","y","z", "x","y","z"]
0 1 2 3 4 5 6 7 8 9 10 <-- indices id
---> onwards
---> always in 3 chunks
Что способ сделать это в Python?
Я попытался это, но не помогло:
In [8]: import itertools as IT
In [9]: import operator
In [11]: [list(zip(*g))[::-1] for k, g in IT.groupby(enumerate(l1[2:]), operator.itemgetter(1))]
Out[11]:
[[('x',), (0,)],
[('y',), (1,)],
[('z',), (2,)],
[('x',), (3,)],
[('y',), (4,)],
[('z',), (5,)],
[('x',), (6,)],
[('y',), (7,)],
[('z',), (8,)]]
Вы отправляете этот вопрос второй раз. Пожалуйста, подробно объясните, как вы получили '[[2, 3, 4], [5, 6, 7], [8, 9, 10]]' из 'l1 = [" foo "," bar "," х»,„у“,„г“,„х“,„у“,„г“,„х“,„у“,„г“] '. Если вы объясните, то люди помогут вам лучше. – Nilesh
@ Lafada: см. Обновление. – pdubois
А если у вас есть последовательность 'l1 = [" foo "," bar "," x "," y "," z ","? "," X "," y "," z "," x " , "y", "z"] ' – Nilesh