Hello there Turan here, today I'm going to share a algorithm that turns complex lists into simple lists (flatten lists).
First of all, what is a complex list? It is a list that contains different type lists inside it, looks so complex and make it hard to read. For example:
l = [[1,'a',['cat'],2],[[],'dog'],4,5]
The above list is an example of complex list, we are going to turn it into this:
[1, 'a', 'cat', 2, 3, 'dog', 4, 5]
Let me show you the code and explain it to you ^^
from typing import List l = [[1,'a',['cat'],2],[[],'dog'],4,5] flat_list2 =  def lookInside(l): # Takes the list type element for x in l: # For each sub-element of it if type(x) is not list: # If the sub-element is not list, flat_list2.append(x) # Then add it to flat_list else: lookInside(x) # Else, look inside of it again # WE ARE STARTING HERE !!! def makeFlat(l): # Getting the list for e in l: # Checking the elements of the list if type(e) is list: # If element's type is list then lookInside(e) # send that element to lookInside function else: flat_list2.append(e) # Else, (if it is not list) append it to our new flat_list makeFlat(l) # Function call, the complex list has been given to function print(flat_list2) # Printing the flatten list
With the code above, we can turn complex lists into simple (flatten) lists, whatever complex list contains 2nd, 3rd, 4th... degree lists. It doesn't matter for us because we are using recursive function that makes everything easier.
Here how our recursive function works:
[ 1, , [] ] ==> Our function takes 1 as a normal element
[ , [] ] ==> Then for  we are going to our recursive function, this function looks inside of it then sees that "2" is not list, then add it to new list
[ [] ] ==> Then for [] we are going to our recursive function, function looks at it and says that  is a list then send it to itself again just as . After that (like ) it looks inside of  and sees that 3 is not list then add it into new list.
This goes like that :)
I hope it was easy to understand for you, and i hope it helped. Thanks for reading, please leave a like and comment if you want ^^
@Publisher : https://dev.to/toour