ERS*_*ERS -2 python sequences list sequence
我在python中有一个列表,如下所示:
['x','x','x','x','P','x','x','N','P','N','x','x','x','N','P','x','x,'x,','x','x','x','N','x,'x','P','N','x','x','x'....]
Run Code Online (Sandbox Code Playgroud)
我需要处理在某些方面,这样我恢复的单独序列列表P和N.在上面的例子中我需要返回:
[['P'],['N','P','N'],['N','P'],['N'],['P','N'].....]
Run Code Online (Sandbox Code Playgroud)
我看过itertools但没有发现任何能做到这一点的事情.我有很多列表要以这种方式处理,因此效率也很重要.
你可以使用itertools.groupby来做到这一点:
from itertools import groupby
data = ['x','x','x','x','P','x','x','N','P','N','x','x','x','N',
'P','x','x','x','x','x','x','N','x','x','P','N','x','x','x']
out = list(list(g) for k, g in groupby(data, lambda item: item in {'N', 'P'}) if k)
print(out)
# [['P'], ['N', 'P', 'N'], ['N', 'P'], ['N'], ['P', 'N']]
Run Code Online (Sandbox Code Playgroud)
我们按照分组item in {'N', 'P'},并且只保留这个为True的组.