파이썬에서 각 반복이 예외를 던질 수있는 목록 이해력이 있습니다.
예를 들어 다음 과 같은 경우 :
eggs = (1,3,0,3,2)
[1/egg for egg in eggs]
세 ZeroDivisionError
번째 요소에서 예외가 발생합니다.
이 예외를 처리하고 목록 이해를 계속 실행하려면 어떻게해야합니까?
내가 생각할 수있는 유일한 방법은 도우미 기능을 사용하는 것입니다.
def spam(egg):
try:
return 1/egg
except ZeroDivisionError:
# handle division by zero error
# leave empty for now
pass
그러나 이것은 나에게 약간 성가신 것 같습니다.
Python에서이 작업을 수행하는 더 좋은 방법이 있습니까?
참고 : 이것은 ( "를 참조 간단한 예입니다 예를 들어 내 진짜 예를 몇 가지 문맥을 필요로하기 때문에 내가 고안하는 것이 위의"). 0으로 나누는 오류를 피하는 데 관심이 없지만 목록 이해에서 예외를 처리하는 데 관심이 있습니다.
ndarray
에서 적절한 설정으로 numpy 를 사용할 수 있습니다 np.seterr
. 그 결과 1/0 = nan
. 그러나 나는 이것이 필요가 발생하는 다른 상황으로 일반화되지 않는다는 것을 알고 있습니다.
[1/egg except ZeroDivisionError: None for egg in (1,3,0,3,2)]
. 그러나 여전히 초안 모드입니다. 내 직감은 그것이 받아 들여지지 않을 것이라는 것입니다. Imho 표현식은 너무 복잡해질 수 있습니다 (여러 예외 확인, 더 복잡한 조합 (여러 논리 연산자, 복잡한 이해 등))