我有一个要根据分隔符拆分的项目列表。我希望删除所有分隔符,并在 分隔符出现两次 时拆分列表。例如,如果分隔符是 '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/