我有一个长度相同的列表列表。我想将第一个列表分割成给定值的连续运行。然后我想分割剩余的列表以匹配从第一个列表生成的段。
例如:
Given value: 2
Given list of lists: [[0,0,2,2,2,1,1,1,2,3], [1,2,3,4,5,6,7,8,9,10], [1,1,1,1,1,1,1,1,1,1]
Return: [ [[2,2,2],[2]], [[3,4,5],[9]], [[1,1,1],[1]] ]
我得到的最接近的是通过以下方式获取索引:
>>> import itertools
>>> import operator
>>> x = 2
>>> L = [[0,0,2,2,2,1,1,1,2,3],[1,2,3,4,5,6,7,8,9,10],[1,1,1,1,1,1,1,1,1,1]]
>>> I = [[i for i,value in it] for key,it in itertools.groupby(enumerate(L[0]), key=operator.itemgetter(1)) if key == x]
>>> print I
[[2, 3, 4], [8]]
此代码是根据此站点上的另一个问题修改的。
我想找到最有效的方法,因为这些列表可能很长。
编辑:
也许如果我将列表放在一起,可能会更清楚:
[[0,0,[2,2,2],1,1,1,[2],3], -> [2,2,2],[2]
[1,2,[3,4,5],6,7,8,[9],10],-> [3,4,5],[9]
[1,1,[1,1,1],1,1,1,[1],1]] -> [1,1,1],[1]
www说
森栏
杨魅力
随时随地看视频慕课网APP
相关分类