python - 从列表中创建一个子列表,该列表的最小和最大元素之间的正差最小
问题描述
根据新列表的最小元素和最大元素之间的正差最小的条件,如何从 6 个或 7 个元素的列表中生成 4 个元素的列表?
我们知道可以找到两个数组元素之间的最小差异。但是如何根据它制作一个子列表,它的元素比主列表的元素少?
解决方案
如果您有一个满足此条件的 2 个元素的新列表,那么添加任意数量的其他元素不会改变这种情况。因此,您需要做的就是找到原始列表中最接近的两个元素。从那里您可以扩展到任何其他列表。
因此,您可以对列表进行排序并检查后续元素的差异:
original = [1, 3, 5, 6, 9, 15, 17]
s_orig = sorted(original)
pairs = list(zip(s_orig, s_orig[1:]))
closest = min(pairs, key=lambda x: x[1] - x[0])
new = list(closest) # ... optionally add any other elements from 'original' as well
推荐阅读
- html - 如何交替动画折线点?
- python - 具有许多默认值的 Python 类
- python - HTTP 错误 307:Python3 中的临时重定向 - INTRANET
- javascript - 我怎样才能创建一个 MobX 支持的表单并立即传播更改?
- firebase - Firebase 实时数据库中有什么规则吗?
- python - 服务调用的 Python 脚本(打开反向 SSH 隧道)不起作用
- node.js - 当我尝试从异步函数中的类调用函数时,会发送无休止的请求
- c# - 带有文本框的字体 GDI 泄漏
- python - 如何在 Python 中的一个常规 Pandas DataFrame 中加入许多零散的时间序列
- java - 如何更新数据库值