的内部发生在像下面的一个列表的字符:拆分列表成列表基于一个元件
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']
有可能是由一个字符之前一些数字元素。我想闯入子列表此象下面这样:
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']
]
正如你所知道的,根据性质,名单可能看起来类似。否则,他们可能有不同数量的元素,或者完全不同的元素。主分隔符是"|"
字符。我试图运行下面的代码来分割列表,但我得到的只是列表中的同一个更大的列表。即,列表len(list) == 1
import itertools
delim = '|'
smallerlist = [list(y) for x, y in itertools.groupby(biglist, lambda z: z == delim) if not x]
任何想法如何成功地分裂它?
这也是一个非常好的解决方案,我试过了,它可以工作。对于你编辑的部分,它会为'start'引发一个'NameError' – omrakhur