Reputation: 2680
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
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
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
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