如何将字符串处理为子列表层

che*_*fin 8 python recursion list sublist

这是示例表单,稍后我将尝试用文字解释.我有一个打破字符串的列表......

[a, a, a, b, a, a, b, a, c, a, b, a, a, c, a, c, a]
Run Code Online (Sandbox Code Playgroud)

其中b是标准1,c是标准2

我想把它分成这样的列表:

[a, a, a, [b, a, a, [b, a, c], a, [b, a, a, c], a, c], a]
Run Code Online (Sandbox Code Playgroud)

所以我想处理字符串,这样当我浏览它时,如果项目符合条件1,则打开一个新列表,如果项目符合条件2,则关闭列表并返回上面的一个级别.

我试过做这样的事情,但效果并不好.

def sublist(self, l):
  for line in list:
    if not b:
    self.data.append(line)
  else:
    sublist(l[line:])       #<-----  not sure how to recurse it.
Run Code Online (Sandbox Code Playgroud)

我在stackoverflow之前看到了将列表分成相同大小的列表,但没有一个使用一组条件进入子列表.

我对python很新,所以我不太熟悉数据结构和迭代器工具.

geo*_*org 10

干得好:

lst = "aaabaabacabaacaca"

def go(it):
    for x in it:
        if x == 'b':
            yield [x] + list(go(it))
        else:
            yield x
            if x == 'c':
                break 


print list(go(iter(lst)))
Run Code Online (Sandbox Code Playgroud)

  • 尼斯.生成器肯定简化了递归结构. (2认同)