asp添加网站管理员,个人网页设计作品及设计理念,广州冼村事件,免费行情软件app下载安装文章目录 前言一、range遍历越索引现象QS1:遍历range(2,2)会发生什么#xff1f;不会报错#xff0c;但是也不会遍历到任何内容QS1:遍历range(3,2)会发生什么#xff1f;不会报错#xff0c;但是也不会遍历到任何内容 二、列表边遍历边修改注意事项#xff08;Java的List系… 文章目录 前言一、range遍历越索引现象QS1:遍历range(2,2)会发生什么不会报错但是也不会遍历到任何内容QS1:遍历range(3,2)会发生什么不会报错但是也不会遍历到任何内容 二、列表边遍历边修改注意事项Java的List系列集合使用 for-each 循环或 Iterator 遍历集合时也会有下面问题1 避免直接修改列表长度特别是边遍历边append和pop元素2 边遍历边修改里面元素的值这个是安全的一般是结合enumerate 获取索引一起遍历 前言 一、range遍历越索引现象
QS1:遍历range(2,2)会发生什么不会报错但是也不会遍历到任何内容 for i in range(2,2):print(i) # 不会报错但是也不会输出任何内容answer不会报错但是也不会遍历到任何内容
QS1:遍历range(3,2)会发生什么不会报错但是也不会遍历到任何内容 for i in range(3,2):print(i) # 不会报错但是也不会输出任何内容answer不会报错但是也不会遍历到任何内容 上面的这种range越索引不会报错也不会遍历到内容其实在遍历的结尾出用到的非常频繁 1range 函数本身不会引发索引越界错误因为它生成的是一个惰性序列在 Python 3 中而不是直接生成一个完整的列表。 2range 生成的序列是动态计算的只有在迭代时才会生成值。因此即使你定义的 range 范围不合理比如 range(3, 2)它也不会引发索引越界错误而是直接生成一个空序列。 二、列表边遍历边修改注意事项Java的List系列集合使用 for-each 循环或 Iterator 遍历集合时也会有下面问题
1 避免直接修改列表长度特别是边遍历边append和pop元素
问题遍历时直接增删元素会改变列表长度导致索引错位或跳过元素。解决方案 遍历副本保险还是深拷贝遍历比较安全修改原列表。使用 enumerate 获取索引直接创建一个新的列表使用列表推导式创建新列表满足条件的往这个里面加直接使用 filter 函数过滤
2 边遍历边修改里面元素的值这个是安全的一般是结合enumerate 获取索引一起遍历
lst [1,3,2,2,6,7,9,2,3,6,2]for i,e in enumerate(lst):if e 2:lst[i] 4print(lst) # [1, 3, 4, 4, 6, 7, 9, 4, 3, 6, 4]