鱼C论坛

 找回密码
 立即注册
查看: 1473|回复: 8

[已解决]多重列表的读取

[复制链接]
发表于 2018-4-12 11:24:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有个多重列表,比如

[['1045123'], ['1045123', '0'], ['1292848462', '5'], ['5'], ['4', '126', '1', '2', '2', '18588343581208995', '130', '130'], ['45236'], ['45236', '0'], ['5'], ['4', '126', '6', '30', '8', '32', '1368891985494394', '130', '130'], ['27604'], ['27604', '0'], ['5'], ['3', '126', '71', '6', '7', '6037418348748276', '130', '130'], ['196215'], ['196215', '0'], ['5'], ['3', '126', '7', '3', '1390882221525719', '130', '130'], ['1035020'], ['1035020', '0'], ['550130477', '5'], ['5'], ['4', '126', '13', '384', '28', '48', '18719185464564514', '130', '130'], ['29251'], ['29251', '0'], ['377929021', '5'], ['5'], ['4', '126', '6', '3', '4', '304564720905658', '130', '130'], ['27595'], ['27595', '0'], ['5'], ['3', '126', '6', '6', '109951163053010010', '130', '130'], ['27621'], ['27621', '0'], ['351218439', '5'], ['5'], ['4', '126', '6', '7', '19174383277072780', '130', '130'], ['28727'], ['28727', '0'], ['5'], ['3', '126', '5', '7', '8', '6635552675435785', '130', '130'], ['1046359'], ['1046359', '0'], ['28745', '0'], ['28690', '0'], ['47425', '0'], ['29100', '0']]

我想通过递归把所有的内容读取到一个列表中,即去多重

def p(a):
        b=[]
        for i in a:
                if isinstance(i,list):
                        p(i)
                else:
                        print(i)
                        b.append(i)
        return b

为什么返回的列表是空的?要怎么修改?
或者还有什么其他更方便的读取方法?
最佳答案
2018-4-12 11:42:25
第一感觉难道不是把里面中括号去掉就好了嘛
  1. if __name__ == "__main__":
  2.     li = [
  3.         ['1045123'], ['1045123', '0'], ['1292848462', '5'], ['5'],
  4.         ['4', '126', '1', '2', '2', '18588343581208995', '130', '130'],
  5.         ['45236'], ['45236', '0'], ['5'],
  6.         ['4', '126', '6', '30', '8', '32', '1368891985494394', '130', '130'],
  7.         ['27604'], ['27604', '0'], ['5'], ['3', '126', '71', '6', '7', '6037418348748276', '130', '130'],
  8.         ['196215'], ['196215', '0'], ['5'], ['3', '126', '7', '3', '1390882221525719', '130', '130'],
  9.         ['1035020'], ['1035020', '0'], ['550130477', '5'], ['5'],
  10.         ['4', '126', '13', '384', '28', '48', '18719185464564514', '130', '130'],
  11.         ['29251'], ['29251', '0'], ['377929021', '5'], ['5'],
  12.         ['4', '126', '6', '3', '4', '304564720905658', '130', '130'],
  13.         ['27595'], ['27595', '0'], ['5'], ['3', '126', '6', '6', '109951163053010010', '130', '130'],
  14.         ['27621'], ['27621', '0'], ['351218439', '5'], ['5'],
  15.         ['4', '126', '6', '7', '19174383277072780', '130', '130'], ['28727'],
  16.         ['28727', '0'], ['5'], ['3', '126', '5', '7', '8', '6635552675435785', '130', '130'],
  17.         ['1046359'], ['1046359', '0'], ['28745', '0'], ['28690', '0'], ['47425', '0'], ['29100', '0']
  18.     ]
  19.     new_li = eval("[{}]".format(str(li).replace("[", "").replace("]", "")))
  20.     print(new_li)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-12 11:29:35 | 显示全部楼层
def p(a):
        b = []
        for each in a:
                for i in each:
                        b.append(i)
        return set(b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-12 11:35:26 | 显示全部楼层
BngThea 发表于 2018-4-12 11:29
def p(a):
        b = []
        for each in a:

这个只是2重,我实际的数据里有3,4重,个别更高,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 11:42:25 | 显示全部楼层    本楼为最佳答案   
第一感觉难道不是把里面中括号去掉就好了嘛
  1. if __name__ == "__main__":
  2.     li = [
  3.         ['1045123'], ['1045123', '0'], ['1292848462', '5'], ['5'],
  4.         ['4', '126', '1', '2', '2', '18588343581208995', '130', '130'],
  5.         ['45236'], ['45236', '0'], ['5'],
  6.         ['4', '126', '6', '30', '8', '32', '1368891985494394', '130', '130'],
  7.         ['27604'], ['27604', '0'], ['5'], ['3', '126', '71', '6', '7', '6037418348748276', '130', '130'],
  8.         ['196215'], ['196215', '0'], ['5'], ['3', '126', '7', '3', '1390882221525719', '130', '130'],
  9.         ['1035020'], ['1035020', '0'], ['550130477', '5'], ['5'],
  10.         ['4', '126', '13', '384', '28', '48', '18719185464564514', '130', '130'],
  11.         ['29251'], ['29251', '0'], ['377929021', '5'], ['5'],
  12.         ['4', '126', '6', '3', '4', '304564720905658', '130', '130'],
  13.         ['27595'], ['27595', '0'], ['5'], ['3', '126', '6', '6', '109951163053010010', '130', '130'],
  14.         ['27621'], ['27621', '0'], ['351218439', '5'], ['5'],
  15.         ['4', '126', '6', '7', '19174383277072780', '130', '130'], ['28727'],
  16.         ['28727', '0'], ['5'], ['3', '126', '5', '7', '8', '6635552675435785', '130', '130'],
  17.         ['1046359'], ['1046359', '0'], ['28745', '0'], ['28690', '0'], ['47425', '0'], ['29100', '0']
  18.     ]
  19.     new_li = eval("[{}]".format(str(li).replace("[", "").replace("]", "")))
  20.     print(new_li)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-12 11:43:55 | 显示全部楼层
第四时空 发表于 2018-4-12 11:42
第一感觉难道不是把里面中括号去掉就好了嘛

晕,傻逼了我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 11:47:34 | 显示全部楼层


我开玩笑的,没想到被采纳了。这个方法其实不好。
如果列表里是对象呢?那就GG了。
还是用递归的方式好些,可以参考下这个帖子里的github高质量函数分享。里面前几个就有多维列表转一维的方法。
http://bbs.fishc.com/thread-105766-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 11:51:55 | 显示全部楼层
jfmlj 发表于 2018-4-12 11:35
这个只是2重,我实际的数据里有3,4重,个别更高,
  1. def p(a):
  2.     b=[]
  3.     for i in a:
  4.         if isinstance(i,list):
  5.             b.extend(p(i))
  6.         else:
  7.             #print(i)
  8.             b.append(i)
  9.     return b
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 15:07:25 | 显示全部楼层
都是字符串,我就这样想了,不过只能处理二维列表……

  1. tmp=[]
  2. for each in li:
  3.     tmp += each
  4. print(tmp)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-13 08:15:12 | 显示全部楼层
嗯嗯,看了大家的回复,很有启发,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 09:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表