我有这种形式的python列表:list
element11
element12
element13
element21
element23
element31
element32
element33
element34...
,依此类推。在几个元素之后会出现一个空白字符串(元素的数量是可变的)。我想在每次出现空白字符串时拆分此列表,并将其存储为列表列表。
我该怎么做?
答案 0 :(得分:3)
您可以使用itertools.groupby
。只需给它一个描述中断位置的键并过滤掉错误的值即可:
from itertools import groupby
l = ["element11","element12","element13","","element21","element23","","element31","element32","element33","element34"]
list_of_lists = [list(g) for k,g in groupby(l, key=lambda s: s!="") if k]
结果-list_of_lists:
[['element11', 'element12', 'element13'],
['element21', 'element23'],
['element31', 'element32', 'element33', 'element34']]
答案 1 :(得分:0)
我将通过一个简单的for循环来解决此问题,该循环检查空字符串并保存最后一个空字符串的位置。 我在循环后再次调用.append以捕获最后一个切片
l = ['element11','element12','element13','','element21','element23','','element31','element32','element33']
l_new = []
start_i = 0
for i in range(len(l)):
if (l[i]==''):
l_new.append(l[start_i:i])
start_i = i+1
l_new.append(l[start_i:i+1])
print(l_new)
产生
[['element11', 'element12', 'element13'], ['element21', 'element23'], ['element31', 'element32', 'element33']]