在之前的编程语言里,学到for循环里面是可以重置变量i的值的,然后让整个for循环从头开始,但是在python里面却行不通这是为什么呢?

在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= 5

i: 1

j= 2

j= 3

j= 4

i: 2

j= 3

i: 3

j= 4

i: 4

j= 5

i: 5

j= 6

i: 6

j= 7

i: 7

j= 8

i: 8

j= 9

i: 9

从运行结果可以看出,i并没有变动。

List、Set等是动态的、可变对象数量的数据结构,但是迭代器是单向不可变、只能顺序读取、不能逆序操作的数据结构,当迭代器指向的原始数据发生变化时,迭代器自己就迷失了方向。因此,我们可以改用while循环:print("\nwhen we use 'while':")

i=0

while i

print('i:',i)

j=i+1

while j

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语句,需要注意的是,while循环的运行效率比for循环低,所以会花费较多的时间。

以上就是关于“Python中for循环里的变量无法被引用”的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流。

python中一个对象只能被一个变量引用吗_Python中for循环里的变量无法被引用的解决方法...相关推荐

  1. 一个java源文件允许_一个Java源文件中最多只能有一个class定义

    一个Java源文件中最多只能有一个class定义 答:× 确诊甲状腺功能紊乱的常规指标是 答:FT3和FT4 I will not let my children in that way. 答:be ...

  2. java for循环定义变量,在java语言里for循环里的变量如何声明在外面进行使用。

    在java语言里for循环里的变量如何声明在外面进行使用. 关注:142  答案:2  手机版 解决时间 2021-02-01 21:59 提问者懷念那年夏天 2021-01-31 21:11 pub ...

  3. C语言:for循环里的变量,在外面声明与在里面声明,在汇编层面上有区别吗?

    !!!喜欢看视频的朋友请点这里!!! 一.变量声明在for循环外面 C代码如下: #include <stdio.h> int main() {int i, p;for (i = 0; i ...

  4. python一个对象只能被一个变量引用吗_Python中的变量、对象、引用

    很多编程语言都有所谓的引用,对象,变量等概念.这些概念在强类型的语言中貌似并不是那么的重要,但是在动态类型的语言中,还是值得去仔细思考一下的 什么是变量 对于变量,在数学中我们已经了解过,就是一个值可 ...

  5. python一个对象只能被一个变量引用吗_python中的对象、变量、引用的问题

    对象.变量.引用 对象 对象包括 不可变对象 和 可变对象.但从某种意义上来说,可变和不可变并不是对立关系. int,string,float,tuple 这四类属于 不可变对象.这里不可变的含义是: ...

  6. python变量赋值方式_python中变量的命令规制及变量的赋值方式

    文章结构: 一.python中变量的命名规则 二.变量赋值的三种方式 三.python的垃圾回收机制 一.Python中变量的命令规则 变量名只能包含字母.数字和下划线,且不能以数字开头: 变量名不能 ...

  7. python函数中变量的作用域_Python中变量的作用域(variable scope)

    此文目的 此文主要讨论和总结一下,Python中的变量的作用域(variable scope). 目的在于,通过代码,图解,文字描述,使得更加透彻的了解,Python中的变量的作用域: 以避免,在写代 ...

  8. python变量的作用_Python中的变量

    Python中的变量是用来表示一个值的标识符.变量代表了计算机内存中的一个地址.变量允许在程序中访问其他对象,调用函数或执行其他运算. 1.变量命名规则 变量是Python中的标识符,它应该遵循标识符 ...

  9. python变量类型函数_python中的变量和数据类型

    一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...

最新文章

  1. 九种东西吃多会...
  2. SQLyog连接Mysql8.0提示 Authentication plugin ‘caching_sha2_password‘ cannot be loaded
  3. php 去除中英文空格,php去除字符串首尾中英文空格程序_PHP教程
  4. 【MFC】类的层次结构图
  5. python 使用期物处理并发
  6. 数学要考多少分?才能考上985、211,很多高中生看完后沉默了......
  7. linux怎么编译sharedptr,如何使用智能指针(例如auto_ptr r shared_ptr)在Linux上使用C++生成链接列表数据结构?...
  8. ScrollView的学习
  9. 谜题27:变幻莫测的i值
  10. MedianBlur(中值滤波/百分比滤波器)
  11. 2019年第十二届中国大学生计算机设计大赛总结
  12. MATLAB-图像分割
  13. MAC docker 使用阿里加速器
  14. pyodbc mysql_pyodbc and mySQL
  15. 角色个人属性英文缩写
  16. 元组定义 元组运算符
  17. 几个比较实用的网址链接
  18. JAVA定义一个树形的结构_Java自定义树形结构
  19. 我的世界无限法则服务器怎么用,我的世界无限法则版
  20. Hystrix php,详解 hystrix-go 使用与原理

热门文章

  1. 红橙Darren视频笔记 模板模式的应用与BaseActivity
  2. java 并发编程框架
  3. 搭建JAVA Eclipse环境并创建JAVA第一个项目
  4. 解决windows预览体验计划页面空白问题
  5. mongodb数组操作符
  6. 三段式状态机_Verilog实战篇(5)——FIFO amp; 状态机
  7. python制作物联网控制软件下载_Python+树莓派制作IoT(物联网)门控设备
  8. 局域网网管软件_局域网安全管理面临的4大挑战
  9. excel两个指标相关性分析_我用Excel发现了数据分析的本质:回归分析
  10. linux输出和错误信息文件,Log4j配置将错误信息输出到指定文件中[linux tomcat]