@python 中将一个任意嵌套的数字列表展开为一个列表
问题
当导入的数据是多层嵌套的列表时,如何将其展开为一层的列表?
输入数据
list1 = [[1.3, 2, 3], [5.0, 6], [4], [9, 5, 4, 3]]
list2 = [[1], [1, [3], [5, [6]]]]
大量的括号会影响后续的操作,如何将其展开?
使用yield语句,构造一个生成器
代码
def flatten(listIn):
try:
for sublist in listIn:
for element in flatten(sublist):
yield element
except TypeError:
yield listIn
输出结构
[1.3, 2, 3, 5.0, 6, 4, 9, 5, 4, 3]
[1, 1, 3, 5, 6]
实例代码
# 将一个任意嵌套的数字列表展开
def flatten(nested):
try:
for sublist in nested:
for element in flatten(sublist):
yield element
except TypeError:
yield nested
def main():
list1 = [[1.3, 2, 3], [5.0, 6], [4], [9, 5, 4, 3]]
result1 = list(flatten(list1))
print(result1)
list2 = [[1], [1, [3], [5, [6]]]]
result2 = list(flatten(list2))
print(result2)
if __name__ == '__main__':
main()