2010-06-15 121 views
2

可能重复:
Flatten (an irregular) list of lists in Python一起加入列表的列表到一个列表在Python

我有一个由许多列表的列表。下面是一个例子,

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

有没有办法加入所有这些项目一起作为一个列表,所以输出会像

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

重复:http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python – 2010-06-15 14:43:40

+0

重复:HTTP ://stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python – danben 2010-06-15 14:49:06

回答

7

是的,这里是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 

请注意,这会创建一个发生器,因此如果您需要列表,请将其包装在list()中:

flattenedList = list(flatten(nestedList)) 
1

被盗从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 
相关问题