🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1081閲覧

[LeetCode環境]Python3でループ中にlistからintにtypeが変化した原因

dadadada1256999

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/03/13 11:43

編集2021/03/13 11:47

前提

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'>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/03/13 11:56

エラーが発生したコードは何ですか?
dadadada1256999

2021/03/13 12:00

#該当エラー s_list[i] = 1 の箇所でエラーが発生しておりました。 下記の回答にもございますが誤ってs_list[1] = 1 をs_list = 1にしていたことが原因です
guest

回答1

0

ベストアンサー

s_list = 1

これはなにをしてるんでしょうか

投稿2021/03/13 11:53

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dadadada1256999

2021/03/13 11:56

しょうもないことをしていたことに気づきました 次回からしっかりと確認してから質問したいと思います。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問