[python笔记]for循环中循环变量迭代问题
来源:互联网 发布:商标域名价格 编辑:程序博客网 时间:2024/05/18 18:04
[python笔记]for循环中循环变量迭代问题
在python中,for循环相当于一个迭代器(Iterator),在循环体中改变循环变量的值对循环次数是没有影响的。
迭代器在一个独立的线程中工作,并且拥有一个mutex锁。迭代器被创建的时候,建立了一个内存索引表(单链表),这个索引表指向原来的对象,当原来的对象数量改变的时候,这个索引表的内容没有同步改变,所以当索引指针往下移动的时候,便找不到要迭代的对象,于是产生错误。就是说迭代器在工作的时候,是不允许被迭代的对象被改变的。
举个例子,i从0到10循环,j取i+1到10,如果i+j大于5,则i跳到当前的j,并进行后面的循环(不知道怎么描述才对,看不明白就直接看代码吧/(ㄒoㄒ)/~~)。用for循环写就是:
print("when we use 'for':")for i in range(10): print('i:',i) for j in range(i+1,10): print('\tj=',j) if i+j<5: j=j+1 continue else: i=j break
运行结果:
when we use 'for':i: 0 j= 1 j= 2 j= 3 j= 4 j= 5i: 1 j= 2 j= 3 j= 4i: 2 j= 3i: 3 j= 4i: 4 j= 5i: 5 j= 6i: 6 j= 7i: 7 j= 8i: 8 j= 9i: 9
从运行结果可以看出,i并没有变动。
List、Set等是动态的、可变对象数量的数据结构,但是迭代器是单向不可变、只能顺序读取、不能逆序操作的数据结构,当迭代器指向的原始数据发生变化时,迭代器自己就迷失了方向。因此,我们可以改用while循环:
print("\nwhen we use 'while':") i=0while i < 10: print('i:',i) j=i+1 while j < 10: print('\tj=',j) if i+j<5: j=j+1 continue else: i=j break i=i+1
运行结果:
when we use 'while':i: 0 j= 1 j= 2 j= 3 j= 4 j= 5i: 6 j= 7i: 8 j= 9
此时就得到了我们想要的效果。
需要注意的是,while循环的运行效率比for循环低,所以会花费较多的时间。
阅读全文
0 0
- [python笔记]for循环中循环变量迭代问题
- 小心JavaScript中For循环的迭代变量
- python中for循环/迭代的技巧
- Python的for循环迭代
- Python中一个for循环循环多个变量
- python的for循环中不能修改循环变量i
- 关于多层for循环迭代的效率优化问题
- 关于for循环迭代一个小问题
- for循环中定义变量
- python学习笔记(六)循环、迭代
- Python中for循环和while循环
- Python 学习笔记(for循环)
- for循环中声明变量的一个问题回顾
- python中的for循环问题
- Python for循环小问题
- shell脚本 for循环迭代文件
- 迭代方法替代for循环
- matlab中for循环的循环变量在循环体中不能改变的问题
- vue学习第14天,混合mixin
- spidev
- 网络连接判断
- [Linux] 记录一次出来inode告警问题
- 工作中使用过的sql
- [python笔记]for循环中循环变量迭代问题
- hive 内部表和外部表的区别和理解
- hidesBottomBarWhenPushed使用时机
- PAT考试乙级1013(C语言实现)
- Java8 Comparator
- 第一章 SpringCloud概要
- 第三章、网络访问层
- nginx部署
- 从N个数里面,随机抽取M个数(可以用作抽奖随机用户)