我有一个清单:
lists = (['1','2','3','S','3','4','S','4','6','7'])
我希望每次出现“S”时将列表拆分为较小的列表,并将“S”消除为:
([['1','2','3'],['3','4],['4','6','7']])
我的代码:
def x (lists):
empty = ''
list = []
for x in lists:
if x == empty:
list[-1:].append(x)
else:
list.append([x])
return (list)
我试过这样的事情,但我对python很新,而且我无处可去。没什么好看的,我怎么解决我的问题?
答案 0 :(得分:5)
>>> 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']]
答案 1 :(得分:1)
也许像map(list,''.join(lists).split('S'))
或者,[list(s) for s in ''.join(lists).split('S'))
答案 2 :(得分:1)
嗯,可能很有趣,但这应该有效:
[s.split('#') for s in '#'.join(lists).split('#S#')]
如果'#'
不太可能出现在lists
中,则可以使用{{1}}任何字符。