看到红色报错我就裂开
a=b=8
while b>0:
if a.pop(b)==1:
print(b)
else:
b=b-1
我打的代码时想删除一个等于1的数,然后把1这个数的序列数打印下来,结果只显示了一个,还报错,我想问下前辈们是发生了什么
6
Traceback (most recent call last):
File "C:/Users/防守得分/Desktop/列表3.py", line 4, in <module>
if a.pop(b)==1:
IndexError: pop index out of range 一个调试的小思路
a =
b = 8
while b > 0:
print(f"b={b} len(a) = {len(a)}")# 手动调试一下
if a.pop(b) == 1:
print(b)
else:
b = b-1
看下结果
b=8 len(a) = 9
b=7 len(a) = 8
b=6 len(a) = 7
6
b=6 len(a) = 6 <---越界
Traceback (most recent call last):
File "e:/编程/python/chaojiying_Python/鱼C.py", line 46, in <module>
if a.pop(b) == 1:
IndexError: pop index out of range
发现越了,因为用pop()函数判断时,导致列表a的元素个数不断减小,最终越界报错
你是想在列表中删掉一个等于1的数,那么可以使用列表的方法index()配合pop()达到删除的效果
test =
for i in test:
if i == 1:
index = test.index(i)# 获取该元素的小标
print(f"删掉下标为{index}的元素{i}")
test.pop(index) # 并不建议在迭代中删掉元素
print(f"当前列表{test}")
删掉下标为0的元素1
删掉下标为2的元素1
删掉下标为4的元素1
当前列表 {:5_108:}{:5_108:}{:5_108:}{:5_108:}{:5_108:}arr =
== 1]
print(arr)
页:
[1]