python - 从列表中获取 "edge numbers"

标签 python

我有如下数据列表:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 747, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799]

我试图从这个列表中找出它们之间距离最大的两个连续数字。

在这种情况下,答案将是 [47, 747],因为它们在列表中紧挨着列出,而 747 - 47 = 700比任何其他一对连续数字的差异都更大

最佳答案

>>> n = max(range(1, len(L)), key=lambda i: L[i] - L[i-1])
>>> L[n-1:n+1]
[47, 747]

基于 numpy 的方法是:

>>> a = np.array(L)
>>> n = np.diff(a).argmax()
>>> a[n:n+2]
array([ 47, 747])

关于python - 从列表中获取 "edge numbers",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51867074/

相关文章:

python - 你将如何在 python 的数组中对这三个区域进行分组/聚类?

更新 python-mode 后,python virtualenv.el 不再在 emacs 中工作

python - 将 python 数据框汇总为每条记录一行时出现问题

python - 使用字典,练习代码

python - GAE "No module named urllib"

python - QSqlQuery::exec: 数据库未打开,PyQt

python - 在 numpy.zeros 中第一次接触内存后如何处理?

python - Django 查看返回带有额外信息的查询集

python - 多处理池和 Lightgbm

python - 返回数组的函数的 numpy.vectorize