我有以下表格的嵌套列表
inputlist = [[1,2,3],[4,5,6],[7,8,9],[1,2,3,4],[5,6,7,8],[1,2],[3,4]]
我想根据改变长度进一步嵌套它如下:
outputlist = [[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3,4],[5,6,7,8]],[[1,2],[3,4]]]
基本逻辑是我希望将列表长度的每个更改分组到一个新的子列表中。这有点难以解释,但我希望上面两个例子说明了我想要做的事情。
如何使用python
简单而优雅地实现这一目标?感谢。
答案 0 :(得分:4)
add_months(date '1972-02-29', 45*12) = '2017-02-28'
答案 1 :(得分:0)
这是一种方法。
获取所涉及的长度列表:
#solen: set of lengths
solen = set([len(subl) for subl in inputlist]) # portable
solen = {len[subl] for subl in inputlist} # post Python 2.6
然后构建特定长度的列表列表:
#losubl: list of sublists, one for each item from solen
losubl = [[subl for subl in inputlist if len(subl) == ulen] for ulen in solen]
正如jamylak指出的那样,这种解决方案的效率低于基于itertools的解决方案(多次通过,牺牲了一些订单信息)。 OTOH,如果你没有使用itertools的其他用途,它可能会避免导入。如果您正在使用的列表很复杂,那么使用itertools可能值得额外导入。