1. 程式人生 > >python多層巢狀轉換為一維列表

python多層巢狀轉換為一維列表

1.遞迴方式

[1,2,[3,[4,5],6]]

def expand_list(nested_list):
    for item in nested_list:
        if isinstance(item, (list, tuple)):
            for sub_item in expand_list(item):
                yield sub_item
        else:
            yield item

注:
isinstance() 函式來判斷一個物件是否是一個已知的型別,類似 type()。


isinstance() 與 type() 區別:

  • type() 不會認為子類是一種父類型別,不考慮繼承關係。

  • isinstance() 會認為子類是一種父類型別,考慮繼承關係。

如果要判斷兩個型別是否相同推薦使用 isinstance()。

2.推導式

func = lambda x: [y for l in x for y in func(l)] if type(x) is list else [x]