[解決済み】Python throws ValueError: list.remove(x): xがリストにない。
2022-02-08 22:47:28
質問
このプログラムを実行するたびに、このエラーが発生します。
ValueError: list.remove(x): x not in list
私は、1体のエイリアンにボルトが当たるたびに、そのエイリアンのヘルスを下げようとしています。また、そのエイリアンはヘルスが
<= 0
. 同様に、ボルトも破壊されるでしょう。以下は私のコードです。
def manage_collide(bolts, aliens):
# Check if a bolt collides with any alien(s)
for b in bolts:
for a in aliens:
if b['rect'].colliderect(a['rect']):
for a in aliens:
a['health'] -= 1
bolts.remove(b)
if a['health'] == 0:
aliens.remove(a)
# Return bolts, aliens dictionaries
return bolts, aliens
は
ValueError
の行で発生します。
aliens.remove(a)
. はっきりさせるために、両方の
aliens
と
bolts
は辞書のリストである。
何が間違っているのでしょうか?
どうすればいいですか?
ループしているリストから項目を削除してはいけません。代わりにコピーを作成してください。
for a in aliens[:]:
そして
for b in bolts[:]:
ループ中にリストを変更すると、ループに影響します。
>>> lst = [1, 2, 3]
>>> for i in lst:
... print i
... lst.remove(i)
...
1
3
>>> lst
[2]
2回ループしているリストから項目を削除すると、さらに少し複雑になり、ValueErrorが発生します。
>>> lst = [1, 2, 3]
>>> for i in lst:
... for a in lst:
... print i, a, lst
... lst.remove(i)
...
1 1 [1, 2, 3]
1 3 [2, 3]
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
ValueError: list.remove(x): x not in list
で変更するリストのコピーを作成する場合、そのリストには、以下のものが含まれます。 各 を使用することで、この問題を回避することができます。
>>> lst = [1, 2, 3]
>>> for i in lst[:]:
... for i in lst[:]:
... print i, lst
... lst.remove(i)
...
1 [1, 2, 3]
2 [2, 3]
3 [3]
コリジョンが発生した場合は、その部分を削除するだけです。
b
ボルト
一度
但し、エイリアンを傷つけたループではありません。エイリアンは後で別に掃除してください。
def manage_collide(bolts, aliens):
for b in bolts[:]:
for a in aliens:
if b['rect'].colliderect(a['rect']) and a['health'] > 0:
bolts.remove(b)
for a in aliens:
a['health'] -= 1
for a in aliens[:]:
if a['health'] <= 0:
aliens.remove(a)
return bolts, aliens
関連
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python カメの描画コマンドとその例
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない