+ 7
Tuples inside a list
There is a challenge question with code: my_list = [([]), [()]] for i in my_list: print(bool(i), sep=' ') Can anybody explain why is the output 'False True'?
4 Answers
+ 6
Your outer list has two comma-separated elements, ([]) and [()].
The first set of parentheses just disappears, because you can't write a tuple like that.
The syntax for a single-element tuple would be: ([],)
The syntax for an *empty* tuple on the other hand is ().
So parentheses with 0 or 2+ elements are tuples, while parentheses with 1 element just work for grouping unless you add a comma.
+ 7
HonFu thank you very much, now it is clearer for me.
+ 6
I know about empty-False, but why as of the first item () is expression grouping and as of the second expression it is an empty tuple when the both ()'s are inside a list?
+ 3
Sergei Romanov
() this is considers as empty as nothing is present inside the parenthesis. but when it's inside any list then it considered as an list elements.
[] this is considered as an empty list without tuple.
([]) this whole statement is considered as empty so bool i when refere to index 0 elements it return false as it reading empty thing which is give false by bool.
The parentheses in ([]) just reorders the expression which in the end is just the same thing as []
[()] is an empty tuple in a list
When converting any container to a bool, an empty container is False, otherwise it is True
my_list is[ [], [()] ] so the for loop iterates twice
bool( [] ) == False
bool( [()] ) == True (because the list is not actually empty; it contains an empty tuple)