[Tutor] Recursively flatten the list

Dave Angel davea at ieee.org
Sat Mar 26 12:47:40 CET 2011


On 01/-10/-28163 02:59 PM, Prasad, Ramit wrote:"

 >A more important problem is that it is flattening only one level.
 >Multi-level flattening is I think not possible without using some kind
 >of recursion."
 >
 >Not true, just requires more iterations to check each element. Each 
 >iteration could check if every element is a list and then unpack if it 
 >is a list. When you finally have an iteration that has no lists, you 
 >can end the loop.
 >
 >Not time efficient or pretty but it would certainly work without 
 >recursion.  I am sure people on this list can provide a better answer 
 >than I can :)
 >
 >
 >Ramit

Indeed, something like the following would suffice, in one "pass". 
Untested:

index = 0
while index < len(mylist):
     if isinstance(mylist[index), list):
         mylist[index:index+1] = mylist[index]
     else index += 1

DaveA




More information about the Tutor mailing list