如果我要列出一个列表,比如说:
我目前的做法如下。
lst = ['hello', 'foo', 'test', 'world', 'bar', 'idk']
我希望将它拆分为一个子列表,以'foo'
和'bar'
作为起始和结束关键字,这样我就可以得到
lst = ['hello', ['foo', 'test', 'world', 'bar'], 'idk']
我目前的做法如下。
def findLoop(t):
inds = [index for index, item in enumerate(t) if item in ["FOO", "BAR"]]
centre = inds[(len(inds)/2)-1:(len(inds)/2)+1]
newCentre = t[centre[0]:centre[1]+1]
return t[:centre[0]] + [newCentre] + t[centre[1]+1:]
def getLoops(t):
inds = len([index for index, item in enumerate(t) if item in ["FOO", "BAR"]])
for i in range(inds):
t = findLoop(t)
return t
这看起来有点凌乱,但它非常适用于嵌套的开始/结束关键字,因此子列表可以在子列表内部形成,但对于不在彼此内部的多个开始/结束关键字则无法正常工作。目前尚未重要的是嵌套,因此任何帮助都将不胜感激。