小编Leo*_*ead的帖子

Python将列表拆分为给定开始/结束关键字的子列表

如果我有一个清单,请说

lst = ['hello', 'foo', 'test', 'world', 'bar', 'idk']
Run Code Online (Sandbox Code Playgroud)

我想将它拆分为一个子列表,'foo'并将其'bar'作为开始和结束关键字,以便我得到

lst = ['hello', ['foo', 'test', 'world', 'bar'], 'idk']
Run Code Online (Sandbox Code Playgroud)

我目前这样做的方式如下.

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
Run Code Online (Sandbox Code Playgroud)

这看起来有点混乱,但它对于嵌套的开始/结束关键字非常有效,因此子列表可以在子列表中形成,但它不适用于多个开始/结束关键字不在彼此内部.嵌套并不重要,所以任何帮助都将受到赞赏.

python loops list sublist

14
推荐指数
3
解决办法
1244
查看次数

Python在开始和结束关键字模式中将列表拆分为子列表

如果我有一个清单,请说:

lst = ['foo', 'bar', '!test', 'hello', 'world!', 'word']
Run Code Online (Sandbox Code Playgroud)

如果有一个字符!,我将如何返回给出的列表:

lst = ['foo', 'bar', ['test', 'hello', 'world'], 'word']
Run Code Online (Sandbox Code Playgroud)

我很难找到解决方案.这是我尝试过的一种方法:

def define(lst):
    for index, item in enumerate(lst):
        if item[0] == '!' and lst[index+2][-1] == '!':
            temp = lst[index:index+3]
            del lst[index+1:index+2]
            lst[index] = temp
    return lst
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

python split list sublist

10
推荐指数
1
解决办法
677
查看次数

标签 统计

list ×2

python ×2

sublist ×2

loops ×1

split ×1