How to throw an exception as the output of a list comprehension?

Question:

I want to throw an exception if an item in a list isn’t an integer through a list comprehension, how would this be done outside of an extra function?

Basically, is there a one-line approach to have an exception be called by the output of a list comprehension?

[raise Exception('Incorrect Data Type Present') for x in my_list if not isinstance(x,int)]

This, understandably, does not work.

Asked By: Dremloogic

||

Answers:

What you want is a simple if statement, not a list comprehension.

if not all(isinstance(x, int) for x in my_list):
    raise Exception('Incorrect Data Type Present')

or equivalently,

if any(not isinstance(x, int) for x in my_list):
    raise Exception('Incorrect Data Type Present')

Based on the message, Exception should probably be TypeError.

You could also use a for loop in place of the generator expression consumed by all/any:

for x in my_list:
    if not isinstance(x, int):
        raise Exception('Incorrect Data Type Present')
Answered By: chepner
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.