为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白猪掌柜的 2021-07-15 17:11:15
输入['~', 'n1', 'n2', ..., 'nn', '~', 'k1', 'k2', ..., 'kn', '~']期望的输出:[['n1', 'n2', ..., 'nn'],['k1', 'k2', ..., 'kn']]我见过 itertools groupby 但无法让它工作。任何帮助,将不胜感激。此外 ... 实际上不在列表中,只是说两者之间有更多元素
查看完整描述

1 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

该groupby方法是最好的一个。


使用 key 函数进行分组item != '~',并根据 key 进行过滤True(当x=='~',key 函数返回时False,if k条件将其过滤掉)


import itertools


lst = ['~', '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]


查看完整回答
反对 回复 2021-07-27
  • 1 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号