我需要對列表中的元素進行求和,包含所有的零或1,以便在列表中有1時結果爲1,否則爲0。(Binary)總結列表中的元素
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)
在解釋器工作正常,但給我的錯誤
類型錯誤:int()函數的參數必須是字符串或數字,而不是'列表'
我剛剛開始使用python,並且無法弄清楚發生了什麼問題(我用C++編寫的版本也不起作用)。
有沒有人有任何指針?
另外,我怎麼做的總和,以便它是一個二進制異或,而不是簡單的十進制加法?
定義了哪個'x'? – arshajii
你只需要['任何'功能](http://docs.python.org/3/library/functions.html#any)? –
@BrendanLong是的,事實證明,工作。第一個下午與Python。 –