[解決済み] リスト内包で例外を処理するには?
質問
Pythonのリスト内包で、反復するたびに例外が発生するものがあります。
例えば を、持っている場合。
eggs = (1,3,0,3,2)
[1/egg for egg in eggs]
を取得します。
ZeroDivisionError
の例外が3番目の要素で発生します。
この例外を処理して、リスト内包の実行を継続するにはどうしたらよいでしょうか。
ヘルパー関数を使用する方法しか思いつきません。
def spam(egg):
try:
return 1/egg
except ZeroDivisionError:
# handle division by zero error
# leave empty for now
pass
でも、これではちょっと面倒くさそうですね。
Pythonでこれを行う良い方法はないでしょうか?
注意してください。 これは簡単な例です(" 例えば 上記の ")は、私の本当の例にはいくつかのコンテキストが必要なため、私が工夫したものです。 ゼロ除算エラーの回避ではなく、リスト内包の例外処理に興味があるのです。
どうやって解決するの?
Pythonには例外を無視する(あるいは例外発生時に代替値を返す)ような組み込み式がないので、リスト内包で例外を処理することは文字どおり不可能です。 いいえ 例外をキャッチ、無視、処理できるのはステートメントだけです)。
関数呼び出しは式であり、関数本体には好きなだけ文を含めることができるので、あなたが気づいたように、例外を引き起こしやすい部分式の評価を関数に委ねることは、実現可能な回避策のひとつです(実現可能な場合は、他の回答にもあるように、例外を引き起こすかもしれない値のチェックもあります)。
リスト内包で例外を処理する方法"という質問に対する正しい回答は、この真実のすべての部分を表現しています:1)文字通り、つまり内包自体に語彙的にできない、2)現実的には、その仕事を関数に委ねるか、それが可能な場合はエラーを起こしやすい値のチェックを行う、です。このように、答えになっていないというあなたの繰り返しの主張には根拠がありません。
関連
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] 複数の例外を一度にキャッチする?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
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によるLeNetネットワークモデルの学習と予測
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python カメの描画コマンドとその例
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない