Python 按特定元素拆分列表以获得列表列表
输入 期望输出:Python 按特定元素拆分列表以获得列表列表,python,python-3.x,list,Python,Python 3.x,List,输入 期望输出: ['~', 'n1', 'n2', ..., 'nn', '~', 'k1', 'k2', ..., 'kn', '~'] 我见过itertools groupby,但无法使其运行。任何帮助都将不胜感激。还有。。。实际上不在列表中,只是说中间有更多的元素,groupby方法是最好的方法 使用键函数项进行分组!='~',并对键进行筛选,该键为True(当x='~'时,键函数返回False,如果k条件过滤掉该值) 结果: import itertools lst = ['~',
['~', 'n1', 'n2', ..., 'nn', '~', 'k1', 'k2', ..., 'kn', '~']
我见过itertools groupby,但无法使其运行。任何帮助都将不胜感激。还有。。。实际上不在列表中,只是说中间有更多的元素,groupby方法是最好的方法 使用键函数
项进行分组!='~'
,并对键进行筛选,该键为True
(当x='~'
时,键函数返回False
,如果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]
请注意,您必须强制对已发布的组进行迭代,因为groupby
返回iterables(以防万一您需要再次对它们进行迭代)
如果有空字符串,则更简单:不需要lambda
,依赖于值的真实性并使用bool
运算符:
[['n1', 'n2', 'nn'], ['k1', 'k2', 'kn']]
groupby
方法是最好的方法
使用键函数项进行分组!='~'
,并对键进行筛选,该键为True
(当x='~'
时,键函数返回False
,如果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]
请注意,您必须强制对已发布的组进行迭代,因为groupby
返回iterables(以防万一您需要再次对它们进行迭代)
如果有空字符串,则更简单:不需要lambda
,依赖于值的真实性并使用bool
运算符:
[['n1', 'n2', 'nn'], ['k1', 'k2', 'kn']]
如果要在
'~'
上拆分,列表不应该以空列表开始和结束[]
?空列表不应该包含在结果中吗?结果中没有空列表,只是我在outputRelated中所说的:(类似的问题,但在输出中包含分隔符元素)@Aran Fey这个答案回答得很好,也就是说:,在第一部分(即使它不是OP需要的输出),如果你在“~”
上拆分,列表不应该以空列表开始和结束吗[]
?空列表不应该包含在结果中吗?结果中没有空列表,只是我在outputRelated中所说的:(类似的问题,但在输出中包含分隔符元素)@Aran Fey这个答案回答得很好,就是说:,在第一部分(即使不是OP需要的输出)好的,接下来的问题。如果“~”是空字符串呢?好的,接下来的问题。如果“~”是空字符串呢