给定一个数字列表,当两个相邻元素的距离大于 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]]
