我需要对包含所有零或一的列表的元素求和,以便如果列表中有 1,则结果为 1,否则为 0。
def binary_search(l, low=0,high=-1):
if not l: return -1
if(high == -1): high = len(l)-1
if low == high:
if l[low] == 1: return low
else: return -1
mid = (low + high)//2
upper = [l[mid:high]]
lower = [l[0:mid-1]]
u = sum(int(x) for x in upper)
lo = sum(int(x) for x in lower)
if u == 1: return binary_search(upper, mid, high)
elif lo == 1: return binary_search(lower, low, mid-1)
return -1
l = [0 for x in range(255)]
l[123] = 1
binary_search(l)
我用来测试的代码
u = sum(int(x) for x in upper)
在解释器中工作正常,但给了我错误
TypeError:int() 参数必须是字符串或数字,而不是“列表”
我刚刚开始使用python,无法弄清楚出了什么问题(我用c ++编写的版本也不起作用)。
有没有人有任何指示?
另外,我将如何求和,使其成为二进制异或,而不仅仅是十进制加法?