Dans une liste comme celle ci-dessous:liste Divisé en listes basées sur un caractère survenant à l'intérieur d'un élément
biglist = ['X', '1498393178', '1|Y', '15496686585007', '-82', '-80', '-80', '3', '3', '2', '|Y', '145292534176372', '-87', '-85', '-85', '3', '3', '2', '|Y', '11098646289856', '-91', '-88', '-89', '3', '3', '2', '|Y', '35521515162112', '-82', '-74', '-79', '3', '3', '2', '|Z', '0.0', '0.0', '0', '0', '0', '0', '0', '4', '0', '154']
Il pourrait y avoir des éléments numériques précédés d'un caractère. Je voudrais briser ce en sous-listes comme ci-dessous:
smallerlist = [
['X', '1498393', '1'],
['Y', '1549668', '-82', '-80', '-80', '3', '3', '2', ''],
['Y', '1452925', '-87', '-85', '-85', '3', '3', '2', ''],
['Y', '3552151', '-82', '-74', '-79', '3', '3', '2', ''],
['Z', '0.0', '0.0', '0', '0', '0', '0', '0', '4', '0', '154']
]
Comme vous pouvez le dire, selon le caractère, les listes pourraient ressembler. Sinon, ils pourraient avoir un nombre différent d'éléments ou d'éléments dissemblables. Le séparateur principal est le caractère "|"
. J'ai essayé d'exécuter le code suivant pour diviser la liste, mais tout ce que je reçois est la même liste, plus grande, dans une liste. À savoir, la liste des len(list) == 1
import itertools
delim = '|'
smallerlist = [list(y) for x, y in itertools.groupby(biglist, lambda z: z == delim) if not x]
Toute idée comment le diviser avec succès?
C'est une très bonne solution aussi, j'ai essayé et ça marche. Pour votre partie éditée, cela déclenche un 'NameError' pour' start' – omrakhur