din*_*elk 5 python performance range max min
有没有一种可接受的有效方法来查找python中数字列表的范围(即最大值 - 最小值)?我尝试过使用循环,我知道我可以使用带减法的min和max函数.我只是想知道是否有某种更快的内置.
您不可能找到比min和max函数更快的东西了。
您可以编写一个minmax函数,该函数执行一次传递来计算两个值,而不是两次传递,但您应该对此进行基准测试以确保它更快。如果它是用 Python 本身编写的,则可能不会,但添加到 Python 中的 C 例程可能会做到这一点。像这样的东西(伪代码,尽管它看起来像Python):
def minmax (arr):
if arr is empty:
return (None, None)
themin = arr[0]
themax = arr[0]
for each value in arr[1:]:
if value < themin:
themin = value
else:
if value > themax:
themax = value
return (themin, themax)
Run Code Online (Sandbox Code Playgroud)
另一种可能性是在数组周围插入您自己的类(如果您想直接处理真实数组,这可能是不可能的)。这基本上会执行以下步骤:
themin和设置themax为该值。themin和 ,themax具体取决于新值与它们的比较方式。themin或 的元素themax,则将数组标记为脏。themin和themax。themin并themax使用上面伪代码中的循环,然后将数组设置为干净的。这样做的作用是缓存最小值和最大值,这样,在最坏的情况下,您只需要很少进行大型计算(在删除最小值或最大值的元素之后)。所有其他请求都使用缓存的信息。
此外,元素的添加无需进行大量计算即可保持最新themin。themax
而且,可能更好的是,您可以为每个和维护一个脏标志,这样脏一个仍然允许themin您themax使用另一个的缓存值。
| 归档时间: |
|
| 查看次数: |
5995 次 |
| 最近记录: |