如何在不同的部分(在某个元素之后)拆分List(在python中)?

时间:2014-11-28 16:12:28

标签: python

我有以下问题。我有一个包含元素的列表。 例如:

L = ['@@', ' n', ' .', '  ', '-\\', '@@', '+A', '+u', '@@', '+g', '+r', '+u'] 

现在,我想在每个'@@'之后拆分List,我得到以下内容:

L1 = ['@@', ' n', ' .', '  ', '-\\']    
L2 = ['@@', '+A', '+u']    
L3 = ['@@', '+g', '+r', '+u']    

我尝试了很多但我不知道怎么做。

2 个答案:

答案 0 :(得分:2)

您可以使用生成器功能:

def split_by(iterable, split_by):
    group = []
    for elem in iterable:
        if elem == split_by:
            if group:
                yield group
            group = []
        group.append(elem)
    if group:
        yield group

然后将其用作:

groups = list(split_by(L, '@@))

或使用循环:

for group in split_by(L, '@@'):
    print group

演示:

>>> def split_by(iterable, split_by):
...     group = []
...     for elem in iterable:
...         if elem == split_by:
...             if group:
...                 yield group
...             group = []
...         group.append(elem)
...     if group:
...         yield group
... 
>>> L = ['@@', ' n', ' .', '  ', '-\\', '@@', '+A', '+u', '@@', '+g', '+r', '+u'] 
>>> for group in split_by(L, '@@'):
...     print group
... 
['@@', ' n', ' .', '  ', '-\\']
['@@', '+A', '+u']
['@@', '+g', '+r', '+u']

答案 1 :(得分:0)

你能定义一个函数来做到这一点吗?例如,

def split_list(list, delimiter):
     out_list = []
     for element in list:
          if element == delimiter:
               out_list.append([element])
          else:
               out_list[-1] = out_list[-1].append(element)
     return out_list