Python 板


LINE

※ 引述《sean72 (.)》之铭言: : #Python 3.3 : a = ['a','b','c','d','x/'] : for i in a: : if '/' not in i: : a.remove(i) : print(a) : 预期输出: ['x/'] : 实际输出: ['b', 'd', 'x/'] : 为什麽 b 和 d 两个元素无法被滤掉? : 虽然可以反向绕路 但还是非常疑惑 : tmp = [] : for i in a: : if '/' in i: : tmp.append(i) : print(tmp) : 感谢帮忙 Python 的 for-in 回圈是 iterator-based, 不是 index-based 所以你要注意 iterator-based 回圈的共同特性: 「不能在回圈内改动你正在 iterate 的东西」(包含新增/移除/更改顺序) 因为回圈所使用的 iterator 是在回圈开始前产生, 不会在回圈进行时变动 一旦你改动了该项目, 该 iterator 就无法反映项目的新状态 这时候就会开始发生一些奇怪的事情(未定义行为) 解法有很多 以你的状况而言, 最简单的改写方案是拷贝一份来 iterate a = ['a','b','c','d','x/'] for i in list(a): if '/' not in i: a.remove(i) print(a) 因为所有的 Python 变数都是 reference 所以 list(a) 制造出来的新 list 中, 包含的项目与 a 的项目是同样的东西 注意不是值相同, 而是真的是「同一个」 所以即使你 iterate 的是 list(a) 而非 a 本身, 仍然可以找到 a 里面的项目 -- 「我最想要的同伴嘛,首先是要笑口常开,其次是我们能永远不会发生误会。 如果这些都能办到的话,嗯,如果他是世界上第一流的桥手,也还不错。」 -- 班尼多‧加罗素,前义大利蓝队成员 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.81.146
1F:推 timTan:可以列为程式语言最常犯的十个错之一。 08/25 00:13
2F:推 ck574b027:最後一段看起来怪怪的,就算是值相同也可以找到 a 的项 08/25 00:36
3F:→ ck574b027:目啊,跟 python 的机制没关系不是吗? 08/25 00:37
4F:推 yoshien:感谢分享 08/25 23:45
5F:推 vagic:抱歉我觉得最後一段有点怪 list(a)是copy喔 跟a不是同一个 08/27 09:52
6F:→ vagic:东西 只是值相同(就是有两条list) b=a才会指到同一个东西 08/27 09:53
7F:→ vagic:也可能是我理解力不好 这里只是为了澄清观念 感谢 08/27 09:54
8F:推 timTan:楼上要讲reference 比较好 08/27 11:58
9F:推 timTan:Reference 是强调内容物,list(a)本文有强调是新的了 08/27 12:16
10F:推 ck574b027:原文是说"包含的项目"啊,并没说a和list(a)指到同一地方 08/28 16:34
11F:推 vagic:我困惑的是下一行:"注意不是值相同, 而是真的是「同一个" 08/28 18:07
12F:→ vagic:不过感谢楼上两位 我想我概念上有比较清楚 另外抱歉表达不好 08/28 18:09







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP