1.问题描述:
给定一个列表,该列表中的每个元素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。
2.样例:
样例 1: 输入: [[1,1],2,[1,1]] 输出:[1,1,2,1,1] 样例解释: 将其变成一个只包含整数的简单列表。 样例 2: 输入: [1,2,[1,2]] 输出:[1,2,1,2] 样例解释: 将其变成一个只包含整数的简单列表。 样例 3: 输入:[4,[3,[2,[1]]]] 输出:[4,3,2,1] 样例解释: 将其变成一个只包含整数的简单列表。
3.代码:
class Solution(object):
# @param nestedList a list, each element in the list
# can be a list or integer, for example [1,2,[1,2]]
# @return {int[]} a list of integer
# Method 1
def flatten(self, nestedList):
# Write your code here
result = []
for item in nestedList:
if type(item) is list:
for subitem in self.flatten(item):
result.append(subitem)
else:
result.append(item)
return result
# Method 2
def flatten2(self, nestedList):
if type(nestedList) == int:
return [nestedList]
s = []
result = []
it = iter(nestedList)
while True:
try:
t = next(it)
if type(t) == int:
result.append(t)
else:
s.append(it)
it = iter(t)
except StopIteration:
if len(s) == 0:
break
it = s.pop()
return result
参考资料:
1. https://blog.csdn.net/zslngu/article/details/88432193