【发布时间】:2017-09-26 12:32:32
【问题描述】:
如果满足某些条件,我正在尝试合并两个列表(在列表列表中)。
一个例子:
li = [[18, 19, 20, 21, 22], [25, 26, 27], [59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69]]
li2 = [[15, 16, 17], [32, 33, 34, 35], [89, 90, 91], [95, 96, 97, 98]]
条件是如果每个列表之间的差异(或者说是距离)小于 7 个单位,则列表将被合并。列表合并后,我想补上缺失的数字。
因此预期结果如下:
li = [[18, 19, 20, 21, 22, 23, 24, 25, 26, 27], [59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69]]
li2 = [[15, 16, 17], [32, 33, 34, 35], [89, 90, 91, 92, 93, 94, 95, 96, 97, 98]]
这是我正在处理的当前代码:
new_li = []
for i in np.arange(len(li) - 1):
current_item, next_item = li[i], li[i+1]
if next_item[0] - current_item[-1] <= 7:
new_li.append(current_item + next_item)
else:
new_li.append(next_item)
这给了我:
new_li = [[18, 19, 20, 21, 22, 25, 26, 27], [59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69]]
并应用li2的代码:
new_li2 = [[32, 33, 34, 35], [89, 90, 91], [89, 90, 91, 92, 93, 95, 96, 97, 98]]
在我开始填写缺失值之前,我的代码是不正确的,并且似乎无法让代码的最后一部分正确。非常感谢任何改进我的代码的帮助或提示!
【问题讨论】:
-
为什么使用
np.arange?range会更快,并且您不需要 NumPy 作为依赖项。