嵌套list的展开python

2020-04-15  本文已影响0人  钢筋铁骨

eg:
input:[1, 3,[5, 6, [9, 10], [11,[12, [13, 14]]], 15]]
output:[1, 3, 5, 6, 9, 10, 11, 12, 13, 14, 15]

class FlatList(object):
    def __init__(self):
        self.res = []

    def run(self, big_list):
        if not isinstance(big_list, list):
            return
        for item in big_list:
            if isinstance(item, list):
                self.run(item)
            else:
                self.res.append(item)

    def flat(self, l):
        for k in l:
            if isinstance(k, list):
                for x in self.flat(k):
                    yield x
                # 等价于
                # yield from self.flat(k)
            else:
                yield k


big_list = [1, 3,[5, 6, [9, 10], [11,[12, [13, 14]]], 15]]

print ("原始list:")
print (big_list)
s = FlatList()
s.run(big_list=big_list)
print ("result: ", s.res)
print ("yield写法:", list(s.flat(big_list)))
···
上一篇 下一篇

猜你喜欢

热点阅读