的內部發生在像下面的一個列表的字符:拆分列表成列表基於一個元件
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