前提
LeetCodeの問題を解いていた際、原因がわからないことが起きたため質問をさせていただきました。
対象は67. Add Binary で、2つの2進数が入力され2進数計算を行い出力することを目的とした問題です。
発生している問題・エラーメッセージ
TypeError: 'int' object does not support item assignment s_list[i] = 0 Line 28 in addBinary (Solution.py) ret = Solution().addBinary(param_1, param_2) Line 58 in _driver (Solution.py) _driver() Line 69 in <module> (Solution.py)
エラー内容はintオブジェクトが引数に対応していないことを示していると考えています。
そこでfor文のindexと該当エラーの配列のtypeを出力させると、エラーを起こした変数s_listのtypeがlist要素からint要素に変更されています。
なぜ、要素が変化したのかわからず質問をさせていただきました
該当のソースコード
Python3
1class Solution: 2 def addBinary(self, a: str, b: str) -> str: 3 if(a == ""): 4 return b 5 elif(b == ""): 6 return a 7 8 #配列を反転させ下位行から計算する 9 s = a if len(a) > len(b) else b 10 s_list = [int(str_s) for str_s in list(s)][::-1] 11 y = b if len(a) > len(b) else a 12 y_list = [int(str_y) for str_y in list(y)][::-1] 13 #桁上がり用 14 upper = 0 15 16 #桁数の多い配列を変更する形で下位行から計算し、桁数の少ない配列が終了すれば 17 #それ以降の桁をそのままにする 18 for i,x in enumerate(s_list): 19 if(len(y_list) > i): 20 print(i) 21 if(x and y_list[i] and upper): 22 s_list[i] = 1 23 upper = 1 24 25 elif(x and y_list[i]) or (x and upper) or (y_list[i] and upper): 26 print(type(s_list)) 27 #該当エラー 28 s_list[i] = 0 29 upper = 1 30 elif(y_list[i] or upper): 31 s_list = 1 32 upper = 0 33
stdin
1"1010" 2"1011"
stdout
10 21 3<class 'list'> 42 53 6<class 'int'>
回答1件
あなたの回答
tips
プレビュー