python - 删除列表中彼此距离小于 N 的元素
问题描述
假设我有以下列表:
a = [0,5,10,11,15,22]
...而且我想确保列表元素彼此之间始终至少相隔 5,我该怎么做?
预期结果:
[0,5,10,15,22]
我尝试的不是很pythonic:
a.sort()
prev_elem = a[0]
new_list = []
for elem in a[1:]:
if abs(prev_elem-elem) >= 5:
new_list.append(prev_elem)
# update
prev_elem = elem
解决方案
您可以通过对现有代码进行一些非常小的更改来做到这一点。
更改的行在下面注释。
a = [0,5,10,11,15,22]
a.sort()
prev_elem = a[0]
new_list = [prev_elem] # <====== initialise with one element
for elem in a[1:]:
if abs(prev_elem-elem) >= 5:
new_list.append(elem) # <===== append the new element
prev_elem = elem # <===== indented more (inside "if" block)
print(new_list)
这给出了:
[0, 5, 10, 15, 22]
推荐阅读
- javascript - 如何等待 Promise.all 中的 2 个 Promise 完成然后执行另一个任务
- elasticsearch - 减少 ElelasticSearch 重启延迟
- python - 根据日期列在熊猫数据框中插入行
- dialogflow-es - 如何访问添加到 dialogFlow 处理请求的 http 标头
- javascript - 按查询删除 API 用作 curl 但不在 Node-Red 中
- python - 我们可以使用带有 t-sne 功能的 tdqm 进度条吗?
- jquery - Safari scrollTop() 不能与 Flexbox column-reverse 一起正常工作
- vuejs2 - 如何在vue中制作配置json文件?
- excel - Excel VBA:使用类别和日期参数搜索前景
- android - 如何启用定位?