math.isnan(), isinf() și isfinite() în Python

Numere și matematică Python 3.0+ (isfinite: 3.2+)

Verifică dacă un număr este NaN, infinit sau un număr finit obișnuit.

Sintaxă
math.isnan(x)
math.isinf(x)
math.isfinite(x)

Ce face math.isnan(), isinf() și isfinite()

isnan(x) este True pentru valoarea „nu este număr” (NaN), isinf(x) pentru plus sau minus infinit, iar isfinite(x) pentru orice număr care nu este nici NaN, nici infinit.

Valorile speciale apar din date lipsă (de exemplu în fișiere CSV prelucrate cu alte biblioteci), din float("nan") sau din operații ca inf - inf.

Parametri

Parametru Descriere
x Un număr.

Ce returnează

True sau False.

Exemple

Exemplul 1: Curățarea unor valori

import math
valori = [3.5, float("nan"), math.inf, -2.0, -math.inf]
for v in valori:
    print(v, math.isnan(v), math.isinf(v), math.isfinite(v))
print([v for v in valori if math.isfinite(v)])

Rezultat

3.5 False False True
nan True False False
inf False True False
-2.0 False False True
-inf False True False
[3.5, -2.0]

Greșeli frecvente

  • Elimini valorile NaN cu v != v sau v == float("nan"); a doua variantă nu funcționează niciodată. Folosește math.isnan.

Comenzi înrudite

  • math.pi, e, tau, inf și nan: Constantele matematice ale modulului math: π, e, τ, infinit și „nu este număr”.
  • math.isclose(): Verifică dacă două numere zecimale sunt „suficient de apropiate” pentru a fi considerate egale.
  • float(): Tipul numerelor cu zecimale; float() transformă un text sau un întreg în număr zecimal.