2010-06-15 4 views
2

Possible en double:
Flatten (an irregular) list of lists in PythonInscrivez-vous une liste de listes en une seule liste en Python

J'ai une liste qui se compose de plusieurs listes. Voici un exemple,

[ 
    [Obj, Obj, Obj, Obj], 
    [Obj], 
    [Obj], 
    [ 
     [Obj,Obj], 
     [Obj,Obj,Obj] 
    ] 
] 

Est-il possible de se joindre à tous ces éléments ensemble comme une seule liste, de sorte que la sortie sera quelque chose comme

[Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj] 
+3

double: http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python –

+0

double: http : //stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python – danben

Répondre

7

Oui, voici one way to do it:

def flatten(lst): 
    for elem in lst: 
     if type(elem) in (tuple, list): 
      for i in flatten(elem): 
       yield i 
     else: 
      yield elem 

Veuillez noter, ceci crée un générateur, donc si vous avez besoin d'une liste, enveloppez-le dans list():

flattenedList = list(flatten(nestedList)) 
1

volés de MonkeySage, here:

def iter_flatten(iterable): 
    it = iter(iterable) 
    for e in it: 
    if isinstance(e, (list, tuple)): 
     for f in iter_flatten(e): 
     yield f 
    else: 
     yield e 
Questions connexes