如何正确的使用索引值来获取列表的元素?

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

l

ist_in=[15,10,54,30,74,12,11,24,9,43,52,8,14,38,47,77,99,89,26]
n=len(list_in)
k=0
while k<n:
    if list_in[k]%2==0:
        list_in.remove(list_in[k])
        continue
    k+=1
return list_in

运行结果及报错内容
python
IndexError                                Traceback (most recent call last)
C:\Users\KING14~1\AppData\Local\Temp/ipykernel_20436/577291653.py in <module>
      3 k=0
      4 while k<n:
----> 5     if list_in[k]%2==0:
      6         list_in.remove(list_in[k])
      7         continue

IndexError: list index out of range

我的解答思路和尝试过的方法

上面代码里面的第五行一直报错,我尝试着把while下面的所有语句都删了,添加了一个print(list_in[k])是可以打印出整个列表的,k也一直在列表的长度范围内,但为什么把list_in[k]作为判断条件就会一直说list index out of range。

我想要达到的结果

你都把这个list里的元素删了 那他肯定就没有原来的长度了
比如你的list有20个元素,循环一次,你取的index是0 你删除了一个元素 那list就只有19个了
第二次你取的的下标是1 你在删除一个元素 list就只有18了
多次循环之后index一直在涨 可是list越来越小 自然就index超出范围了

你改变了list_in的长度了,所以会报错,你copy一个list_in,你那个return,没函数你写return干嘛


a = [15, 10, 54, 30, 74, 12, 11, 24, 9, 43, 52, 8, 14, 38, 47, 77, 99, 89, 26]
list_in = a.copy()
n = len(list_in)
k = 0
while k < n:
    if list_in[k] % 2 == 0:
        a.remove(list_in[k])
    k += 1
print(a)

如有帮助,希望点一下下采纳

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632