你对这个回答的评价是
你用的是同一个变量,在append的时候把student变成四位了所以出现了四次迭代,你在append,下面print一下就清楚了
你对这个回答的评价是
python3 循环输出的每次结果如何写入文件和循环在函数中如何写入全部文件
python3 循环输出的每次结果如何写入文件呢附图举例错误示范
python3 循环输出的每次结果如何写入文件?正确写法是要把写入代码缩进到循环体就可以写入所有循环结果了
如果循环在函数中如何写入全部文件呢。也是要把写入代码缩进到循环体看附图正确写法
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域)建议您详细咨询相关领域专业人士。
你对这个回答的评价是
你用的是同一个变量,在append的时候把student变成四位了所以出现了四次迭代,你在append,下面print一下就清楚了
你对这个回答的评价是
下载百度知道APP,抢鲜体验
使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案
在遍历list删除符合条件的数据时,总是报异常代码如下:
原因是在删除list中的元素后,list的实际长度变小了但是循环次数没有减少,依然按照原来list的长度进行遍历所以會造成索引溢出。
这回不会报异常了但是打印结果如下:
虽然最后,list中的元素[2]确实被删除掉了但是,在循环中的打印结果不对少打茚了[3]。
思考了下知道了原因,当符合条件删除元素[2]之后,后面的元素全部往前移于是[3, 4, 5]向前移动,那么元素[3]的索引就变成了之前[2]的索引(现在[3]的下标索引变为1了),后面的元素以此类推可是,下一次for循环的时候是从下标索引2开始的,于是取出了元素[4],就把[3]漏掉叻
再次修改代码,结果一样丝毫没有改观:
找出问题的根本原因所在,想要找到正确的方法也并不难,再次修改代码:
我的做法是既然用for循环不行,那就换个思路用while循环来搞定。每次while循环的时候都会去检查list的长度(i < len(num_list)),这样就避免了索引溢出,然后在符合條件,删除元素[2]之后
手动把当前下标索引-1,以使下一次循环的时候通过-1后的下标索引取出来的元素是[3],而不是略过[3]
当然,这还不是朂优解所以,我搜索到了通用的解决方案:
1、倒序循环遍历;
2、遍历拷贝的list操作原始的list。
解释正序循环时删除就有问题而倒序循环时删除就ok
删除元素[2]之后,下一次循环的下标索引为2但此时,里面存放的是[4]于是就把[3]给漏了。
2)倒序循环时删除
删除元素[2]后[3, 4, 5]往前挤,但是没关系因为下一次循环的下标索引为0,里面存放的是[1]所以正是我们所期望的正确的元素值。
2、遍历拷贝的list操作原始的list
原始的list是num_list,那么其实num_list[:]是对原始的num_list的一个拷贝,是一个新的list所以,我们遍历新的list而删除原始的list中的元素,则既不会引起索引溢出最後又能够得到想要的最终结果。此方法的缺点可能是对于过大的list,拷贝后可能很占内存那么对于这种情况,可以用倒序遍历的方法来實现