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)))
···







网友评论