gpt4 book ai didi

python - Python中的二分查找,更优雅的方法?

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:52 25 4
gpt4 key购买 nike

我正在切换到 Python 并练习一些基本的逻辑流程,并且编写了一个二分搜索函数。有没有更优雅的方式来写这个?例如,我不喜欢将初始最大值设置为 10**99(这只是包含任何实际列表大小的一种方法)。

def binary_search(val, arr, minum=0, maxim=10**99):
if val < arr[0] or val > arr[-1]:
return "Not in range"

arr = arr[minum:maxim]
middle = int(len(arr) / 2)
maxim = len(arr)

if val == arr[middle]:
return middle
elif val > arr[middle]:
return middle + binary_search(val, arr, middle, maxim)
else:
return binary_search(val, arr, 0, middle)

最佳答案

如果 maxim 仅在切片中使用,None 会执行相同的操作:

def binary_search(val, arr, minum=None, maxim=None):

参见:

>>> x = [1, 2, 3, 4, 5]
>>> x[None:None]
[1, 2, 3, 4, 5]
>>> x[1:None]
[2, 3, 4, 5]
>>>

但老实说,除非您想限制搜索,否则它似乎是一个无用的参数,但是当您传递列表(不是数组!)时,您最好在您之前明确执行此操作。

关于python - Python中的二分查找,更优雅的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42148716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com