Given an array that may contain nested arrays, produce a single resultant array.
方法一:
def flattenArray(inputArray, outArray=None):
if outArray is None:
outArray = []
for ele in inputArray:
if isinstance(ele, Iterable):
flattenArray(ele, outArray)
else:
outArray.append(ele)
return outArray
if __name__ == "__main__":
print(flattenArray([1, 2, [3, 4], [5, [6, [7, 8]]], 9]))
方法二:
# returns iterator
def flatten_iter(iterable): # 使得该函数变成一个生成器
"""
Takes as input multi dimensional iterable and
--> Takes multi dimensional iterable as input and
returns generator which produces one dimensional output.
"""
for element in iterable:
if isinstance(element, Iterable):
yield from flatten_iter(element)
else:
yield element
if __name__ == "__main__":
flatten_iter([1,2,3,[4,5,6],[7,[8,9]]])