FAQ: Recursion: Python - No Nested Lists Anymore, I Want Them to Turn Flat


This community-built FAQ covers the “No Nested Lists Anymore, I Want Them to Turn Flat” exercise from the lesson “Recursion: Python”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Learn Recursion: Python

FAQs on the exercise No Nested Lists Anymore, I Want Them to Turn Flat

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

1 Like

Hi, can anyone help here? what I understood so far (after learning Python for 2 months) is that we dont have to explicitly write “else” for an else statement, as long as we indent it on the same level as the if statment that should work. However, in the codes below, not using “else” has resulted of a different output…not sure why…

#this one is the model answer with “else”
def flatten(my_list):
result =
for el in my_list:
if isinstance(el, list):
print(“list found!”)
flat_list = flatten(el)
result += flat_list
return result

output -
[‘mercury’, ‘venus’, ‘earth’, ‘mars’, ‘jupiter’, ‘saturn’, ‘uranus’, ‘neptune’, ‘pluto’]

this one does not have else but instead "result.append(item) is indented on the same level as the if statement.

def flatten(my_list):
result =
for item in my_list:
if isinstance(item, list):
print(“list found!”)
flat_list = flatten(item)
result += flat_list
return result

output - [‘mercury’, ‘venus’, ‘earth’, [‘earth’], ‘mars’, ‘jupiter’, ‘saturn’, [‘jupiter’, ‘saturn’], [[‘jupiter’, ‘saturn’]], ‘uranus’, ‘neptune’, ‘pluto’, [‘neptune’, ‘pluto’]]



I think I found a bug, but I just want to double check: I’m doing the following lesson: https://www.codecademy.com/paths/computer-science/tracks/learn-recursion-python/modules/recursion-python/lessons/recursion-python/exercises/recursion-python-flatten

And my code doesn’t seem to work for step #2. I looked at the solutions really quickly, and I feel like I have the same thing going on. I went ahead and read the rest of the grayed out instructions. When I run the code, it also appears to do what it’s supposed to do. What is going on? Why can’t I pass step #2 even though I feel like I did it correctly?

I even changed the case of “L” on “list found”.

# define flatten() below...
def flatten(my_list):
  result = []
  for element in my_list:
    if isinstance(element, list):
      print("list found!")
      flat_list = flatten(element)
      result += flat_list
  return result
### reserve for testing...
planets = ['mercury', 'venus', ['earth'], 'mars', [['jupiter', 'saturn']], 'uranus', ['neptune', 'pluto']]



It didn’t like my else statement for step #2, which I think is stupid, because it still printed “list found!”, it just didn’t want to see anything other than the if statement. Oh well…


This is the corresponding test:

Components.OutputTerminal.hasOutput(/list found!\nlist found!\nlist found!/i)

Codecademy absolutely has the unfortunate habit of testing something slightly different from what their error message says is wrong.

Your output doesn’t match that pattern because it has additional output in it.

1 Like
if (condition):
  do thing_A
do thing_B

When the condition is True, run the above code, the result will be do both thing_A and thing_B

if (condition):
  do thing_A
  do thing_B

When the condition is True, run the above code, the result will be do thing_A only

When the condition is False, running the above two codes will be giving the same result, do thing_B only