Skip to main content
 首页 » 编程设计

python之如何根据 Python 中连续元素的距离拆分数字列表

2025年05月04日14jillzhang

给定一个数字列表,当两个相邻元素的距离大于 n 时,如何拆分它?

输入:

n = 3    
l = [1, 2, 5, 3, -2, -1, 4, 5, 2, 4, 8] 

输出:

[[1, 2, 5, 3], [-2, -1], [4, 5, 2, 4], [8]] 

请您参考如下方法:

您可以使用 zip 来完成:

# initialization 
>>> lst = [1, 2, 5, 3, -2, -1, 4, 5, 2, 4, 8] 
>>> n = 3 

使用 zip 查找拆分位置:

>>> indices = [i + 1 for (x, y, i) in zip(lst, lst[1:], range(len(lst))) if n < abs(x - y)] 

使用之前的结果切片子列表:

# pad start index list with 0 and end index list with length of original list 
>>> result = [lst[start:end] for start, end in zip([0] + indices, indices + [len(lst)])] 
>>> result 
[[1, 2, 5, 3], [-2, -1], [4, 5, 2, 4], [8]]