大多数Pythonic方法通过重复元素拆分数组

spe*_*ane 14 python

我有一个项目列表,我想根据分隔符进行拆分.我希望删除所有分隔符,并在分隔符出现两次时拆分列表.例如,如果分隔符是'X',则以下列表:

['a', 'b', 'X', 'X', 'c', 'd', 'X', 'X', 'f', 'X', 'g']
Run Code Online (Sandbox Code Playgroud)

会变成:

[['a', 'b'], ['c', 'd'], ['f', 'g']]
Run Code Online (Sandbox Code Playgroud)

请注意,最后一组未拆分.

我写了一些丑陋的代码来做到这一点,但我确信有更好的东西.如果您可以设置任意长度分隔符(即在看到N个分隔符后拆分列表),则需要额外的分数.

cob*_*bal 13

我不认为这会有一个很好的,优雅的解决方案(我当然希望被证明是错误的)所以我会建议一些简单明了的事情:

def nSplit(lst, delim, count=2):
    output = [[]]
    delimCount = 0
    for item in lst:
        if item == delim:
            delimCount += 1
        elif delimCount >= count:
            output.append([item])
            delimCount = 0
        else:
            output[-1].append(item)
            delimCount = 0
    return output
Run Code Online (Sandbox Code Playgroud)

 

>>> nSplit(['a', 'b', 'X', 'X', 'c', 'd', 'X', 'X', 'f', 'X', 'g'], 'X', 2)
[['a', 'b'], ['c', 'd'], ['f', 'g']]
Run Code Online (Sandbox Code Playgroud)