鱼C论坛

 找回密码
 立即注册
查看: 3594|回复: 9

[已解决]列表推导

[复制链接]
发表于 2016-12-27 14:50:26 | 显示全部楼层 |阅读模式

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

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

x
我这儿有一个字符串式的列表['[a:1,b:2,c:3]', '[a:3,b:3,c:8]', '[a:2,c:2,m:7,r:4]', '[a:3,b:2,c:7,o:5]']想剔除重复的关键字得到['[a:1,b:2,c:3]', '[a:2,c:2,m:7,r:4]', '[a:3,b:2,c:7,o:5]']如何遍历啊  
最佳答案
2016-12-28 00:25:54
真心不明白你的目的是什么
我用下面代码把数据格式化了
想怎么搞随便你了so easy
  1. myseq = ['[a:1,b:2,c:3]', '[a:3,b:3,c:8]', '[a:2,c:2,m:7,r:4]', '[a:3,b:2,c:7,o:5]']
  2. list1 = []
  3. for each_list in myseq:
  4.     list1.extend([[ x.replace('[', '').replace(']', '') for x in each_list.split(',')]])

  5. print(list1)
复制代码


结果如下
  1. >>>
  2. [['a:1', 'b:2', 'c:3'], ['a:3', 'b:3', 'c:8'], ['a:2', 'c:2', 'm:7', 'r:4'], ['a:3', 'b:2', 'c:7', 'o:5']]
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-27 14:53:33 | 显示全部楼层
推导到这儿就卡壳了,希望大神们帮忙解惑
QQ图片20161227145308.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-27 16:27:48 | 显示全部楼层
没有太理解你的意思,是不是这样的。
  1. list1 = ['[a:1,b:2,c:3]', '[a:3,b:3,c:8]', '[a:2,c:2,m:7,r:4]', '[a:3,b:2,c:7,o:5]']
  2. list2 = []
  3. list3 = []
  4. for i in list1:
  5.     set1 = set()
  6.     for j in range(len(i)):
  7.         if i[j] == ':':
  8.             set1.add(i[j - 1])
  9.     if set1 not in list2:
  10.         list3.append(i)
  11.         list2.append(set1)
  12. print(list3)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-27 16:48:49 | 显示全部楼层
冬雪雪冬 发表于 2016-12-27 16:27
没有太理解你的意思,是不是这样的。

不是的!你的代码中有用到set()集合,暂时还没学到这个知识点,只学到列表及列表推导

题目是这样的:
设有以下信息字符串:
myseq = """[a:1,b:2,c:3]
        [a:3,b:3,c:8]
        [a:2,c:2,m:7,r:4]
        [a:3,b:2,c:7,o:5]"""
现要求去除其中重复的关键字,如上例的处理结果为:
   '[a:1,b:2,c:3]','[a:7,c:2,m:7,r:4]','[a:3,b:2,c:7,o:5]'
'''
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-27 16:52:50 | 显示全部楼层
玄夜Python之路 发表于 2016-12-27 16:48
不是的!你的代码中有用到set()集合,暂时还没学到这个知识点,只学到列表及列表推导

题目是这样的:
...

你是说只能用列表推导式?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-27 17:06:16 | 显示全部楼层
冬雪雪冬 发表于 2016-12-27 16:52
你是说只能用列表推导式?

是的,因为集合这个知识点还没学到
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-28 00:25:54 | 显示全部楼层    本楼为最佳答案   
真心不明白你的目的是什么
我用下面代码把数据格式化了
想怎么搞随便你了so easy
  1. myseq = ['[a:1,b:2,c:3]', '[a:3,b:3,c:8]', '[a:2,c:2,m:7,r:4]', '[a:3,b:2,c:7,o:5]']
  2. list1 = []
  3. for each_list in myseq:
  4.     list1.extend([[ x.replace('[', '').replace(']', '') for x in each_list.split(',')]])

  5. print(list1)
复制代码


结果如下
  1. >>>
  2. [['a:1', 'b:2', 'c:3'], ['a:3', 'b:3', 'c:8'], ['a:2', 'c:2', 'm:7', 'r:4'], ['a:3', 'b:2', 'c:7', 'o:5']]
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-28 16:58:20 | 显示全部楼层
jackie-L 发表于 2016-12-28 00:25
真心不明白你的目的是什么
我用下面代码把数据格式化了
想怎么搞随便你了so easy

题目是这样的:
设有以下信息字符串:
myseq = """[a:1,b:2,c:3]
        [a:3,b:3,c:8]
        [a:2,c:2,m:7,r:4]
        [a:3,b:2,c:7,o:5]"""
现要求去除其中重复的关键字,如上例的处理结果为:
   '[a:1,b:2,c:3]','[a:7,c:2,m:7,r:4]','[a:3,b:2,c:7,o:5]'
'''
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-28 17:42:32 | 显示全部楼层
玄夜Python之路 发表于 2016-12-28 16:58
题目是这样的:
设有以下信息字符串:
myseq = """[a:1,b:2,c:3]

请问关键字指的是什么??
‘字母’ ‘数字’ 还是 ‘字母:数字’
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-28 17:45:10 | 显示全部楼层
我已经把你的数据从字符串转换为了列表,每个元素都是可以自由取出来的,你要怎么操作都很简单了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-24 16:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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