Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按特定元素拆分列表以获得列表列表_Python_Python 3.x_List - Fatal编程技术网

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需要的输出)好的,接下来的问题。如果“~”是空字符串呢?好的,接下来的问题。如果“~”是空字符串呢