Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Grouping - Fatal编程技术网

Python 将列表拆分为由另一个列表分组确定的组

Python 将列表拆分为由另一个列表分组确定的组,python,list,grouping,Python,List,Grouping,假设我有两张清单 a = [True, True, True, False, False, True, False] b = [1, 2, 1, 3, 2, 1, 0] 我可以将一个列表分组为类似的项目: import itertools b = [list(g) for k, g in itertools.groupby(a)] >>> [[True, True, True], [False, False], [True], [False]] 是否有一种方便的方法将此

假设我有两张清单

a = [True, True, True, False, False, True, False]
b = [1, 2, 1, 3, 2, 1, 0]
我可以将一个列表分组为类似的项目:

import itertools
b =  [list(g) for k, g in itertools.groupby(a)]
>>> [[True, True, True], [False, False], [True], [False]] 
是否有一种方便的方法将此操作应用于其他列表,以提供:

>>> [[1,2,1], [3,2], [1], [0]]
这很管用,但有更好的吗

new_list = []
index = 0
for i in b:
    length = len(i)
    new_list.append(y[index:index+length])
    index += length

谢谢您可以在
枚举(a)
分组:


我想,选择布尔值是个坏主意。我完全看不到这种模式。你能至少发布预期的输出吗?很抱歉没有说清楚,预期的输出是[[1,2,1],[3,2],[1],[0]]有什么方法可以使用相同的索引引用,但在n个列表上?e、 g.[list1[y]表示lst中的y]表示lst中的索引,[list2[y]表示lst中的y]表示lst中的索引]等。。当我尝试在多个列表上使用相同的引用时,我得到一个空列表!话虽如此,它作为一个函数工作得很好:def index(ref):return((x[0]表示x in g)表示g,in groupby(enumerate(ref),key=itemgetter(1)),然后[[anylist[x]表示x in lst]表示lst in index(ref)]
from itertools import groupby, izip
groups = [list(grp) for _, grp in groupby(izip(a, b), lambda x: x[0])]
print [[number for _, number in items] for items in groups]
# [[1, 2, 1], [3, 2], [1], [0]]
>>> from itertools import groupby
>>> from operator import itemgetter
>>> indices = ((x[0] for x in g) for _, g in groupby(enumerate(a), key=itemgetter(1)))
>>> [[b[x] for x in lst] for lst in indices]
[[1, 2, 1], [3, 2], [1], [0]]