【发布时间】:2016-08-02 20:45:03
【问题描述】:
给定一个二维列表:
X = [ [a,2], [b,12], [c,6], [d,0], [e,2], [f,0], [g,0], [h,12], [i,18] ]
我需要得到一个二维列表,它将所有子列表分组,在X[1] 列中用零分隔。我的意思是,我需要选择:
Y = [ [[a,2],[b,12],[c,6]], [[e,2]], [[h,12],[i,18]] ]
ang 仅获取对应的X[0] 条目的列表:
Y = [ [a, b, c], [e], [h, i] ]
我已经问过一个类似的问题,即根据列表中出现的零来选择列表中的元素,但它是一维列表。使用 itertools,我尝试了类似的方法:
Z = [list(v) for k, v in itertools.groupby(X[:,1], lambda x: x == 0) if not k]
我使用X[:,1] 作用于列表的X[1] 部分,因为选择作用于它。但它显然给了我列表中的X[1] 部分:
Z = [[2, 12, 6], [2], [12, 18]]
但我需要X[0] 列...如何在多维列表上使用 itertools?提前致谢。
【问题讨论】:
-
问题不够清楚。你的输入是什么,预期的输出是什么? '用零分隔'?我在您的示例中没有看到零。尝试理解了两分钟,失败了
-
X中的输入和所需的输出是Y(第二个)。零在X列表 ([d,0], [f,0], [g,0]) 的X[1]部分。
标签: python list selection itertools zero