37,721
社区成员
发帖
与我相关
我的任务
分享
T = [1, 2, 3, 4, 5]
for index, item in enumerate(T):
print('剩余数组:{}'.format(T), '即将删除前面数组中下标为{}的数,即{}'.format(index, T[index]), sep='\n')
T.remove(item)
#输出
# 剩余数组:[1, 2, 3, 4, 5]
# 即将删除前面数组中下标为0的数,即1
# 剩余数组:[2, 3, 4, 5]
# 即将删除前面数组中下标为1的数,即3
# 剩余数组:[2, 4, 5]
# 即将删除前面数组中下标为2的数,即5
这个你看懂了就明白为什么会删除不完有剩余了
for i in range(len(dinner)):
del dinner[0]
del dinner
while dinner: #在dinner有元素时,表达式一直为True,直到dinner没有元素(Fales),不在执行循环
del dinner[0] #从dinner头部开始删除元素
# 测试for循环里面直接删除序列
f=['a','d','e']
tip = 1
for x in f:
del f[0]
print(str(tip)+"次删除")
print(x)
print(f)
tip=tip+1
print(tip)
print(f)
"""
输出结果:
1次删除
a
['d', 'e']
2次删除
e
['e']
3
['e']
这是我刚刚在自己的电脑进行的一些操作,说下自己的观点:
我觉得这个循环写成这样根本就不规范,因为你的代码是想在f这个序列里进行循环,
可是你却对f这个序列进行删除操作。
我自己在使用循环的时候,比如for x in f
那么,我在循环后面所做的操作都是针对这个x的,而不会去对f进行操作。
因为但凡你对f里的元素进行操作,那么因为f元素的增加减少等因素,会导致你的循环出现难以理解的地方。
这就好像你去饭店吃饭,却把人家饭馆砸了一样,结果害得你自己吃饭都没办法吃好。
至于你那里为什么会报错,也是因为你在循环里使用del ,
for x in f:
del f
当循环完第一次之后,f就被整个删除了,所以当循环进行到第二次之后,就找不到这个f了。
如果要进行删除整个f的操作,不需要写循环,直接写del f 即可。
PS:
我也是刚刚学习这个的新手,一起加油吧.
"""
>>> ls=[i for i in range(10)]
>>> ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for e in ls.copy():
... print(e)
... if e%3==0:
... ls.remove(e)
...
0
1
2
3
4
5
6
7
8
9
>>> ls
[1, 2, 4, 5, 7, 8]