Jan-07-2019, 11:21 AM
(This post was last modified: Jan-07-2019, 11:21 AM by joaomcteixeira.)
Hello,
After using ternary operators extensively I am getting lost in this case. It took me a couple of hours to understand why I was getting bugged, and though I've identified the cause I can't understand why this example works like this.
Would someone be willing to comment on this? 
EDIT: after posting the thread and staring at it, a spark came... ternary operator ended with the comma... so [""] was passed to c even when condition evaluates to True
After using ternary operators extensively I am getting lost in this case. It took me a couple of hours to understand why I was getting bugged, and though I've identified the cause I can't understand why this example works like this.
1 2 3 4 5 6 7 |
# pretty clear a = [( "1" , "2" ), (" ", " ")] b, c = list ( zip ( * a)) print (b) print (c) ( '1' , '') ( '2' , '') |
1 2 3 4 5 6 7 |
# here I would expect the same as before, however... a = [( "1" , "2" ), (" ", " ")] b, c = list ( zip ( * a)) if True else [" "], [" "] print (b) print (c) [( '1' , ' '), (' 2 ', ' ')] [''] |
1 2 3 4 5 6 7 |
# this result is expected but why it differs from the second? a = [( "1" , "2" ), (" ", " ")] b, c = list ( zip ( * a)) if True else ([" "], [" "]) print (b) print (c) ( '1' , '') ( '2' , '') |

EDIT: after posting the thread and staring at it, a spark came... ternary operator ended with the comma... so [""] was passed to c even when condition evaluates to True