如何将列表拆分为较小的列表?

1 python for-loop list append

我有一个清单:

lists = (['1','2','3','S','3','4','S','4','6','7'])
Run Code Online (Sandbox Code Playgroud)

我希望每次出现"S"时将列表拆分为较小的列表,并将"S"消除为:

([['1','2','3'],['3','4],['4','6','7']])
Run Code Online (Sandbox Code Playgroud)

我的代码:

def x (lists):
    empty = ''
    list = []

    for x in lists:
        if x == empty:
            list[-1:].append(x)
        else:
            list.append([x])

    return (list)
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情,但我对python很新,而且我无处可去.没什么好看的,我怎么解决我的问题?

kev*_*kev 5

试试itertools.groupby():

>>> from itertools import groupby
>>> lists = ['1','2','3','S','3','4','S','4','6','7']
>>> [list(g[1]) for g in groupby(lists, lambda i:i!='S') if g[0]]
[['1', '2', '3'], ['3', '4'], ['4', '6', '7']]
Run Code Online (Sandbox Code Playgroud)