在 Python 中,您可以将两个参数传递给一个函数,其中一个参数是从另一个参数推断出来的吗?
In Python can you pass two arguments to a function where one argument is extrapolated from the other?
我正在 Python 中编写递归二进制搜索函数。我的代码看起来像函数接受的常见示例:
(a) 数字列表;
(b) 搜索词;
(c) 右指针初始位置列表的长度;和
(d) 左指针的默认参数 0。
我是否必须同时传递数字列表 (a) 和 列表的长度 (c)?我不能创建一个自动计算参数 (a) 长度的默认参数吗?
MWE:
def binarySearchRecur(nums, target, high, low=0):
if high - low == 1:
return "not found"
elif nums[(high + low) // 2] < target:
low = (high + low) // 2
return binarySearchRecur(nums, target, low, high)
elif nums[(high + low) // 2] > target:
high = (high + low) // 2 + 1
return binarySearchRecur(nums, target, low, high)
return f"index at: {(low + high) // 2}"
target = 16
nums = [x for x in range(20)]
print(binarySearchRecur(nums, target, len(nums)-1))
在上面的代码中,我想第一次调用函数时只使用 nums
和 target
。
你能简单地做这样的事情吗?
def binarySearchRecur(nums, target, high=None, low=0):
if high is None:
high=len(nums)
...
这样,如果您只输入列表和目标,函数要做的第一件事就是从列表中推断出“high”。
我正在 Python 中编写递归二进制搜索函数。我的代码看起来像函数接受的常见示例:
(a) 数字列表; (b) 搜索词; (c) 右指针初始位置列表的长度;和 (d) 左指针的默认参数 0。
我是否必须同时传递数字列表 (a) 和 列表的长度 (c)?我不能创建一个自动计算参数 (a) 长度的默认参数吗?
MWE:
def binarySearchRecur(nums, target, high, low=0):
if high - low == 1:
return "not found"
elif nums[(high + low) // 2] < target:
low = (high + low) // 2
return binarySearchRecur(nums, target, low, high)
elif nums[(high + low) // 2] > target:
high = (high + low) // 2 + 1
return binarySearchRecur(nums, target, low, high)
return f"index at: {(low + high) // 2}"
target = 16
nums = [x for x in range(20)]
print(binarySearchRecur(nums, target, len(nums)-1))
在上面的代码中,我想第一次调用函数时只使用 nums
和 target
。
你能简单地做这样的事情吗?
def binarySearchRecur(nums, target, high=None, low=0):
if high is None:
high=len(nums)
...
这样,如果您只输入列表和目标,函数要做的第一件事就是从列表中推断出“high”。