我有一个列表:
l=['a','>>','b','>>','d','e','f','g','>>','i','>>','>>','j','k','l','>>','>>']
我需要提取所有
'>>'
的邻居,并将它们分成组,其中它们之间有元素既不是'>>'
也不是'>>'
的邻居。对于示例列表,预期结果如下:
[['a', 'b', 'd'], ['g', 'i', 'j'], ['l']]
我尝试过很多方法,但所有简单的方法都或多或少地失败了。目前似乎唯一有效的代码是这个:
def func(L,N):
outer=[]
inner=[]
for i,e in enumerate(L):
if e!=N:
try:
if L[i-1]==N or L[i+1]==N:
inner.append(e)
elif len(inner)>0:
outer.append(inner)
inner=[]
except IndexError:
pass
if len(inner):
outer.append(inner)
return outer
func(l,'>>')
Out[196]:
[['a', 'b', 'd'], ['g', 'i', 'j'], ['l']]
虽然它似乎可以工作,但我正在想是否有更好、更清晰的方法来实现它?