根据空字符串切片python列表

时间:2019-05-21 22:47:37

标签: python list

我有这种形式的python列表:list

element11
element12
element13

element21
element23

element31
element32
element33
element34...

,依此类推。在几个元素之后会出现一个空白字符串(元素的数量是可变的)。我想在每次出现空白字符串时拆分此列表,并将其存储为列表列表。

我该怎么做?

2 个答案:

答案 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']]