码迷,mamicode.com
首页 > 编程语言 > 详细

python_嵌套列表变成普通列表

时间:2017-04-06 20:59:11      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:style   数据   app   span   typeerror   log   bsp   font   break   

如何把[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_嵌套列表变成普通列表

标签:style   数据   app   span   typeerror   log   bsp   font   break   

原文地址:http://www.cnblogs.com/2bjiujiu/p/6675243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!