python - 通过重复元素拆分数组的最 Pythonic 方式

标签 python

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

['a', 'b', 'X', 'X', 'c', 'd', 'X', 'X', 'f', 'X', 'g']

会变成:

[['a', 'b'], ['c', 'd'], ['f', 'g']]

请注意,最后一组没有拆分。

我已经编写了一些丑陋的代码来执行此操作,但我确信还有更好的代码。如果您可以设置任意长度的分隔符(即在看到 N 个分隔符后拆分列表),则加分。

最佳答案

我不认为会有一个很好的、优雅的解决方案(当然我很乐意被证明是错误的)所以我会建议一些直截了当的东西:

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

>>> nSplit(['a', 'b', 'X', 'X', 'c', 'd', 'X', 'X', 'f', 'X', 'g'], 'X', 2)
[['a', 'b'], ['c', 'd'], ['f', 'g']]

关于python - 通过重复元素拆分数组的最 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8530210/

相关文章:

python - 为什么 numpy 整数减法会产生 float64?

python - 如何以特殊形式添加一行

java - 如何使用 Java(或其他语言)以编程方式打开带密码的 RAR 文件

python - 在 docker 图像中使用 transformers 包时出现问题

python - 在边缘编程案例中选择类或函数

python - 将一个列表除以另一个列表

python - 在 python 中使用 hasattr 而不是 hasattr

python - 在 setup.py (setuptools) 中包含静态数据

python - 需要使用 Pandas Dataframe 编辑 MySQL 表中的行子集

python - Django:将关键别名声明到objects.filter函数中