我有以下问题。我有一个包含元素的列表。 例如:
L = ['@@', ' n', ' .', ' ', '-\\', '@@', '+A', '+u', '@@', '+g', '+r', '+u']
现在,我想在每个'@@'之后拆分List,我得到以下内容:
L1 = ['@@', ' n', ' .', ' ', '-\\']
L2 = ['@@', '+A', '+u']
L3 = ['@@', '+g', '+r', '+u']
我尝试了很多但我不知道怎么做。
答案 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