Python for循环 不能删除相邻元素?
Array1=range(20)foriinArray1:ifi>=5andi<=17:Array1.remove(i)printArray1###输出###[0,1,2...
Array1 = range(20)
for i in Array1:
if i>=5 and i<=17:
Array1.remove(i)
print Array1
### 输出 ###
[0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 19]
Array2 = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
for i in Array2:
if i>=5 and i<=17:
Array2.remove(i)
print Array2
### 输出 ###
[1, 3, 7, 11, 15, 19]
我想把大于5且小于17的元素删掉
但是这样写不能删除相邻元素?
比如Array1,把5删掉了,5后面的是6,结果把6跳过了,6后面是7,7被删了,同样,7后面的8却没有删掉
这是为什么? 展开
for i in Array1:
if i>=5 and i<=17:
Array1.remove(i)
print Array1
### 输出 ###
[0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 19]
Array2 = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
for i in Array2:
if i>=5 and i<=17:
Array2.remove(i)
print Array2
### 输出 ###
[1, 3, 7, 11, 15, 19]
我想把大于5且小于17的元素删掉
但是这样写不能删除相邻元素?
比如Array1,把5删掉了,5后面的是6,结果把6跳过了,6后面是7,7被删了,同样,7后面的8却没有删掉
这是为什么? 展开
1个回答
展开全部
Array1 = range(20)
for i in Array1:
print i
if i>=5 and i<=17:
Array1.remove(i)
## 输出结果
0
1
2
3
4
5
7
9
11
13
15
17
19
在循环中修改列表就会导致这样的结果。
当访问Array1[5]时删掉了5,此时Array1[5] = 6 Array1[6] = 7
下一个循环访问Array1[6]= 7 原本的6就跳过了
追问
那有什么办法让指针前移一个元素吗?
比如从 Array1[5] 回到 Array1[4]
追答
Array1 = range(20)
print filter(lambda i:not (i>=5 and i <=17),Array1)
用filter就解决啦
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询