Windstorm1981
Windstorm1981

Reputation: 2680

Python - Call a Function on a Condition

I was wondering if there is a concise way to call a function on a condition.

I have this:

if list_1 != []:
    some_dataframe_df = myfunction()

I'm wondering if it is possible to this in a ternary operator or something similiar.

If I do

(some_dataframe_df = myfunction()) if list_1 != [] else pass

It doesn't work.

Upvotes: 3

Views: 2662

Answers (3)

onr
onr

Reputation: 296

In ternary operator, the conditionals are an expression, not a statement. Therefore, you can not use pass and normal if statement that you have used is correct.

Upvotes: 2

Mad Physicist
Mad Physicist

Reputation: 114330

Using pass seems like a bad idea in a ternary operator, especially since you can inline a single-statement if.

If you are not worried about your list being None, you can shorten the test to just use the boolean value of the list itself. This has the advantage that it will allow any normal sequence, not just lists.

All in all, you could do something like:

if list_1: some_dataframe_df = myfunction()

Upvotes: 1

jpp
jpp

Reputation: 164693

Your code is fine. The only change I suggest is to use the inherent Truthness of non-empty lists:

if list_1:
    some_dataframe_df = myfunction()

If you wish to use a ternary statement it would be written as:

some_dataframe_df = myfunction() if list_1 else some_dataframe_df

However, this is neither succinct nor readable.

Upvotes: 4

Related Questions