鱼C论坛

 找回密码
 立即注册
查看: 10707|回复: 6

怎么去除list中某些特殊字符

[复制链接]
发表于 2016-1-24 03:56:11 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 夜与晨 于 2016-1-24 19:55 编辑

我想去除list中的,带'q'的元素
我是这么写的
  1. a=['abc','qwe','qes']
  2. for i in a:
  3.     print i
  4.     if 'q' in i:
  5.         print 'ok'
  6.         a.remove(i)
  7.         print a
复制代码


运行之后,
abc
qwe
ok
['abc', 'qes']

为什么'qes'还在呢?问题出在哪里呢?谢谢大家!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-24 08:39:31 | 显示全部楼层
你仔细分析下这段程序的结果,就知道为什么了
  1. a=['abc','qwe','qes']
  2. for i in a:  
  3.     a.remove(i)
  4. print(a)
复制代码


实现去除带'q'元素的代码:
  1. a=['abc','qwe','qes']
  2. temp = a[:]
  3. for i in temp:
  4.     if 'q' in i:   
  5.         a.remove(i)
  6. print(a)
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
hldh214 + 1 + 1 + 1 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-1-24 19:06:00 | 显示全部楼层
zooo 发表于 2016-1-24 08:39
你仔细分析下这段程序的结果,就知道为什么了

下面这个代码是把a的元素复制到temp中了吧,然后遍历temp

上面那个代码为什么不行呢?遍历a,然后依次去除a中的元素,这问题在哪呢?

新手,请原谅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-24 19:17:52 | 显示全部楼层
夜与晨 发表于 2016-1-24 19:06
下面这个代码是把a的元素复制到temp中了吧,然后遍历temp

上面那个代码为什么不行呢?遍历a,然后依次 ...

list的长度变了,
第一轮 i 取第一个元素,第二轮 i 取第二个元素
第一轮list长度为3,i='abc'没问题,当使用remove()后list长度变为2了,第二轮取的时候 i 就等'qes'了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-24 19:20:01 | 显示全部楼层
本帖最后由 hldh214 于 2016-1-24 19:21 编辑
夜与晨 发表于 2016-1-24 19:06
下面这个代码是把a的元素复制到temp中了吧,然后遍历temp

上面那个代码为什么不行呢?遍历a,然后依次 ...


你只要记住for循环列表是以index为准的
0: remove index == 0
1: remove index == 1
2: 此时列表没有index == 2 的项了,迭代结束

简单说: 使用 remove 时,项的位置发生了变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-24 19:40:47 | 显示全部楼层
我懂了,多谢
其实是我没有理解for循环,用for i in range()的时候比较明了
用for in遍历列表,我以为是直接去遍历元素呢,实际上还是遍历的是list的下标,而不是直接遍历元素

如果是下标的话,一切都懂了,谢谢楼上的两位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-24 19:54:16 | 显示全部楼层
用列表推导也可以

a=['abc','qwe','qes']
b=[i for i in a if 'q' not in i]
print b

这样能简洁点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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