作者vagic (0.0)
看板Python
标题Re: [问题] if 'string' not in i:
时间Sat Aug 24 11:57:16 2013
我想应该是这样
因为你边执行loop边remove
所以跑完第一次loop
a会变成['2','3','4','5','6','7','8','x']
然後接下来会从第二个element 也就是'3'开始跑
所以才会感觉只有执行到奇数
你可以在remove之後
print出a来看看 应该就比较明白:)
※ 引述《sean72 (.)》之铭言:
: ※ 引述《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)
: : 感谢帮忙
: a = ['1','2','3','4','5','6','7','8','x']
: for i in a:
: print(i)
: if 'x' not in i:
: a.remove(i)
: print(a)
: Console:
: 1
: 3
: 5
: 7
: x
: ['2', '4', '6', '8', 'x']
: 为什麽只有奇数单位被for 执行到呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.245.65.179
1F:推 yoshien:感谢分享 08/25 20:43