Python分割列表为零

时间:2012-11-29 20:44:10

标签: python

  

可能重复:
  Remove leading and trailing zeros from multidimensional list in Python

如果我有一个列表,如:

my_list = [[1,2,0,1], [1,0,0,1]]

我想将它分成零并将它们扔掉,这样我最终会得到类似的东西:

my_list = [[[1, 2], [1]], [[1],[1]]]

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:1)

除了征服,你可以使用列表理解将其转换为更简单的问题

def split_a_list_at_zeros(L):
    ...
    return the_split_list

my_list = [split_a_list_at_zeros(item) for item in my_list]

和Akavall提供了一个很好的提示来拆分列表

from itertools import groupby
def split_a_list_at_zeros(L):
    return [list(g) for k, g in groupby(L, key=lambda x:x!=0) if k]

答案 1 :(得分:0)

将嵌套列表作为输入有点过于具体,但此函数将使用与string.split()完全相同的样式拆分基于另一个数字的数字列表

def nsplit(number_list,key):
    s=''.join(map(chr,number_list))
    return [map(ord,x) for x in s.split(chr(key))]

print nsplit([1,2,0,1],0)

[[1,2],[1]]