- Checkin笔记 - Flatten a List
- 453. Flatten Binary Tree to Link
- Leetcode 114. Flatten Binary Tre
- 114. Flatten Binary Tree to Link
- 114. Flatten Binary Tree to Link
- 刷题No9 LeetCode114. Flatten Binar
- 114 Flatten Binary Tree to Linke
- 114. Flatten Binary Tree to Link
- LintCode: Flatten Binary Tree to
- [Leetcode] 83. Flatten Binary Tr
题目
将一个嵌套的列表展开成一维列表,嵌套的层数不固定。例如,输入一个 列表[[[2]], [4, [5, 6, [6], 6, 6, 6], 7]],展开后成为[2, 4, 5, 6, 6, 6, 6, 6, 7]。
我的解法
这是借鉴了《python基础教程》中的对于list展开的方法,利用递归算法。
def flat_list(array):
return list(flaten(array))
def flaten(array):
try:
for sublist in array:
for element in flaten(sublist): #此处进行递归处理
yield element
except TypeError:
yield array
if __name__ == '__main__':
assert flat_list([1, 2, 3]) == [1, 2, 3], "First"
assert flat_list([1, [2, 2, 2], 4]) == [1, 2, 2, 2, 4], "Second"
assert flat_list([[[2]], [4, [5, 6, [6], 6, 6, 6], 7]]) == [2, 4, 5, 6, 6, 6, 6, 6, 7], "Third"
assert flat_list([-1, [1, [-2], 1], -1]) == [-1, 1, -2, 1, -1], "Four"
print('Done! Check it')
别人的代码
这个代码比较有意思,将待处理的列表转换为字符串,然后用正则表达式去替换其中的列表符号。但是可能出现的问题是,当[和]本身是列表的元素时会出现错误。
def flat_list(array):
import re
return [int(i) for i in re.findall(r'[-]?\d+', str(array))]












网友评论