what is " if not self.list_stack: " mean?
what is " if not self.list_stack: " mean?
why it can check if the stack is empty or not?
Hey,
Thank you for your question!
Let me answer it by walking you through the following example. In a new cell in the notebook define an empty list as follows:
list_stack = []
Printing out the list simply returns an empty array. Now, however, try to convert the output in a Boolean format as follows:
bool(list_stack)
Executing this line should output False. Therefore, an empty list converted into Boolean outputs False.
Now, add an element inside the list, for example as follows:
list_stack = [2]
Convert again the list into a Boolean and, this time, the output should be True. Therefore, a non-empty list returns True.
Let's now consider Giles' code. The first line of the is_empty() method reads
if not self.list_stack:
Since the if-statement can only check Boolean values (whether a condition is True or False), self.list_stack will be a Boolean expression. For an empty list, self.list_stack would return False. The not command in front would turn False into True. Therefore, for an empty list, the expression
if not self.list_stack:
would turn into
if not False:
which, in turn, becomes
if True:
Therefore, we enter the if-statement and return True. This is great, as the is_empty() method returns True and we indeed started with an empty list.
Consider now a non-empty list. Then
if not self.list_stack:
becomes
if not True:
which is equivalent to
if False:
Therefore, we don't enter the if-statement and jump straight to the else-statement. The is_empty() method returns False. This, again, is indeed what we want, since we started with a non-empty list.
Hope the answer helps!
Kind regards,
365 Hristina
