谁知道 python试错合集之一:使用for in 清空列表

2020年10月18日 星期日 seo网站关键词优化

 

标签:执行函数成功表头跳出循环失败range产生导致

最终目标:将非空列表的元素全部删除

一、第一次尝试代码:

numbers = [1,2,5,6,8,9,7]for number in numbers:   del numbers[0]print(numbers)

实际打印结果:[8, 9, 7]

二、调试后的程序执行过程1、for循环的第一次,列表为[1,2,5,6,8,9,7],此时的number为列表中索引为0的元素1,之后删除列表头部元素——12、for循环的第二次,由于1已经删除,列表变为[2,5,6,8,9,7],而此时number为列表中索引为1的元素,而此时索引为1的元素是5,之后删除列表头部元素——23、接上,列表变为[5,6,8,9,7],此时number为列表中索引为2的元素,而此时索引为2的元素是8,继续删除头部元素——54、继续,列表变为[6,8,9,7],此时number为列表中索引为3的元素,此时索引为3的元素是7,删除列表头部元素——65、列表没有索引为4的第5个元素了,故跳出循环6、打印结果[8,9,7]

三、错误原因 for in 中,每次number获取的元素就是列表索引值为0,1,2...的元素,而每次删除头部元素,引起了列表的变化,继而列表索引值产生变化,使得最终清空失败 四、第二次尝试代码 numbers = [1,2,5,6,8,9,7]for i in range(0,len(numbers)):   del numbers[0]#numbers[1]也行print(numbers)

实际打印结果:[]

打印结果与预期相符,达成目标

五、过程分析 使用range()函数产生数值列表[0,1,2,3,4,5,6],每次访问数值列表时,就删除numbers列表的头部元素(删除尾部元素也一样),而数字列表的个数与原列表一致,故访问多少次数值列表,就对原列表执行多少次删除操作,并最终成功清空列表元素

六、思考

在使用for in处理变化的列表时,一定要注意列表索引值的变化,否则可能导致与预期不符的情况。

python试错合集之一:使用for in 清空列表元素

标签:执行函数成功表头跳出循环失败range产生导致

原文地址:https://www.cnblogs.com/alphabetical/p/13816033.html

您可能也喜欢