前提・実現したいこと
配列の要素(文字列)にある特定の記号が含まれている場合、それを削除した配列を作成しようとしています。
そのため、リストを参照用と操作用の2つに分けて、操作用の要素を削除しています。
発生している問題・エラーメッセージ
参照用のリストは要素の削除をしていないにも関わらず、配列の要素数が減っていくという問題に当たっています。
リストの長さが変化しながら探索をするコードで、名前の違うリストの長さも影響を受けるという状況です。
配列の名前は別々に変えており、なぜこのようなことが起きるのかわからない状態です。
検索しても、解決策を見つけられていません。
candidate 9 result 9 candidate 8 result 8 candidate 7 result 7 candidate 6 result 6 candidate 5 result 5 candidate 4 result 4 Traceback (most recent call last): File "issue.py", line 19, in <module> elm = candidate[i] IndexError: list index out of range
該当のソースコード
python
1import re 2 3ans = ['a', 'b', 'c', '&', 'b--c', 'a/w', 'd', 's.e', 'e'] 4 5#参照 6candidate = [] 7#操作 8result = [] 9 10candidate = ans 11result = ans 12 13#resultは要素を変えていく配列のため、変えない配列としてcandidateを用意 14for i in range(len(candidate)): 15 print('candidate') 16 print(len(candidate)) 17 print('result') 18 print(len(result)) 19 elm = candidate[i] 20 if re.search('--', elm): 21 result.remove(elm) 22 elif re.search('/', elm): 23 result.remove(elm) 24 elif re.search('.', elm): 25 result.remove(elm) 26 elif re.search('&', elm): 27 result.remove(elm) 28 29print(result)
補足情報(FW/ツールのバージョンなど)
Python 3.7.4
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。