首页 > 代码库 > python_嵌套列表变成普通列表

python_嵌套列表变成普通列表

如何把[1, 5, 6, [2, 7, [3, [4, 5, 6]]]]变成[1, 5, 6, 2, 7, 3, 4, 5, 6]?

思考:

  -- for循环每次都遍历列表一层

    -- 把取出的单个值加入到新的列表中

    -- 把取出来的嵌套列表变成新的遍历列表,就需要在for循环外嵌套一个while循环

  -- 当取到最里面的列表嵌套时候,对最后一个值进行处理

 1 #!/usr/bin/python3
 2 import time
 3 list_1 = [1, 5, 6, [2, 7, 7, [3, [4, 5, 6]]]]  # 定义一个嵌套列表
 4 list_1_new = list_1                         # 定义递归接收嵌套列表
 5 list_2 = []                                 # 定义接收取出数据的空列表
 6 count = 0                                   # 循环计数,用于循环列表长度计数
 7 while True:                                 # 开始循环
 8     try:
 9         for i in list_1_new:                # 每次循环都打印一层
10             count += 1
11             if count < len(list_1_new):     # 计算小于初始列表的长度,取出一层数据
12                 list_2.append(i)
13             elif count == len(list_1_new):  # 当计数长度等于初始列表长度,取出二层嵌套列表
14                 list_1_new = i              # 把初始列表变成取出的上面取出的嵌套列表,变成变成遍历初始列表的二层嵌套
15                 count = 0                   # 计算清零
16     except Exception as e:                  # 出现异常打印异常
17         print(e)
18 
19     print(list_2)                           # 打印每次遍历已经添加的值
20     print(list_1_new)                       # 打印每次取出的嵌套列表
21 
22     try:
23         len(list_1_new)                     # 假如最后只有一个值的时候,触发len()异常
24     except TypeError as e:
25         print(e)
26         list_2.append(list_1_new)           # 把最后一个值添加进去
27         break                               # 把最后一个值添加进去跳出循环
28 print(list_2)                               # 打印最好的值

没有解决一个问题:

  -- 这个问题本身很特殊,有点递归嵌套,无法解决一层有2个以上的嵌套列表

 

python_嵌套列表变成普通列表