猿问

按特定元素拆分列表以获取列表列表 Python

输入

['~', 'n1', 'n2', ..., 'nn', '~', 'k1', 'k2', ..., 'kn', '~']

期望的输出:

[['n1', 'n2', ..., 'nn'],['k1', 'k2', ..., 'kn']]

我见过 itertools groupby 但无法让它工作。任何帮助,将不胜感激。此外 ... 实际上不在列表中,只是说两者之间有更多元素


白猪掌柜的
浏览 208回答 1
1回答

GCT1015

该groupby方法是最好的一个。使用 key 函数进行分组item != '~',并根据 key 进行过滤True(当x=='~',key 函数返回时False,if k条件将其过滤掉)import itertoolslst = ['~', 'n1', 'n2', 'nn', '~', 'k1', 'k2', 'kn', '~']result = [list(v) for k,v in itertools.groupby(lst,lambda x : x!='~') if k]结果:[['n1', 'n2', 'nn'], ['k1', 'k2', 'kn']]请注意,您必须对已发布的组强制迭代,因为groupby返回可迭代对象(以防万一您只需要再次对它们进行迭代)如果您有空字符串,那就更简单了:不需要lambda,依靠值的真实性并使用bool运算符:lst = ['', 'n1', 'n2', 'nn', '', 'k1', 'k2', 'kn', '']result = [list(v) for k,v in itertools.groupby(lst,bool) if k]
随时随地看视频慕课网APP

相关分类

Python
我要回答