我在这样的列表a = ['a','b','','','c','d']
上工作,真正的列表包含数千个数据条目。是否有一种奇特的方法可以将列表a
设为[['a','b'],['c','d]]
,因为数据非常庞大?
答案 0 :(得分:4)
您可以使用itertools.groupby
。您基本上按连续的空字符串或连续的非空字符串进行分组。然后在列表推导中保留lambda中按True
分组的所有组。
>>> from itertools import groupby
>>> [list(i[1]) for i in groupby(a, lambda i: i != '') if i[0]]
[['a', 'b'], ['c', 'd']]
另一个例子
>>> b = ['a','b','','','c','d', '', 'e', 'f', 'g', '', '', 'h']
>>> [list(i[1]) for i in groupby(b, lambda i: i != '') if i[0]]
[['a', 'b'], ['c', 'd'], ['e', 'f', 'g'], ['h']]