Poniższy przykład jest bardzo prosty. Chcę wykonać map() z funkcją, która może podnieść wyjątek. Będzie to bardziej wyraźnie na przykładzie:Wyjątek mapy Pythona kontynuuj wykonywanie mapowania
number_list = range(-2,8)
def one_divide_by(n):
return 1/n
try:
for number, divide in zip(number_list, map(one_divide_by, number_list)):
print("%d : %f" % (number, divide))
except ZeroDivisionError:
# Execution is stopped. I want to continue mapping
pass
Kiedy wykonanie tego kodu uzyskać:
-2 : -0.500000
-1 : -1.000000
To ze względu na 0 w moim liście. Nie chcę usunąć tego 0 (ponieważ w rzeczywistości nie mogę najpierw wiedzieć, czy otrzymam wyjątek). Czy wiesz, jak wykonać kontynuować mapowanie po wyjściu z wyjątku?
jeśli wiesz, co wartość do zastąpienia 'nieskończony', a następnie spróbuj użyć ': powrót 1/n; z wyjątkiem ZeroDivisionError: return yourvalue' – Pynchia