Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial
Andrew Whatmore
Full Stack JavaScript Techdegree Student 13,423 PointsChecking for an empty list in the split function
At the top of the split() function, there is a check to see if the list is empty. I'm afraid I didn't understand the explanation for the bit that follows:
If the list is empty, 'linked_list' is assigned to 'left_half', while None is assigned to 'right_half'..
If the list is empty, wouldn't assigning the empty list be the same as assigning None anyway?
Could somebody please help me understand the logic. Many thanks.
1 Answer
Travis Alstrand
Treehouse TeacherHey there Andrew Whatmore đź‘‹
An empty linked list and None aren't the same thing in Python, even though both hold “nothing.”
An empty LinkedList is still an object. LinkedList() creates an instance whose head is None. That object still has everything the class defines, such as .head, .size(), .add() and so on. None is the absence of any object, so it has none of those.
Why left_half = linked_list: handing back the original list means the caller still gets a real LinkedList to work with, even though it’s empty. If the code returned None there, any later line like left_half.head or left_half.size() would crash.
Why right_half = None: an empty list can’t be divided, so there’s no second half to give back. None is just a way of saying “there’s nothing here.”
I hope that helps out a bit!