python中一个对象只能被一个变量引用吗_Python中for循环里的变量无法被引用的解决方法...
在之前的编程语言里,学到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循环里的变量无法被引用的解决方法...相关推荐
- 一个java源文件允许_一个Java源文件中最多只能有一个class定义
一个Java源文件中最多只能有一个class定义 答:× 确诊甲状腺功能紊乱的常规指标是 答:FT3和FT4 I will not let my children in that way. 答:be ...
- java for循环定义变量,在java语言里for循环里的变量如何声明在外面进行使用。
在java语言里for循环里的变量如何声明在外面进行使用. 关注:142 答案:2 手机版 解决时间 2021-02-01 21:59 提问者懷念那年夏天 2021-01-31 21:11 pub ...
- C语言:for循环里的变量,在外面声明与在里面声明,在汇编层面上有区别吗?
!!!喜欢看视频的朋友请点这里!!! 一.变量声明在for循环外面 C代码如下: #include <stdio.h> int main() {int i, p;for (i = 0; i ...
- python一个对象只能被一个变量引用吗_Python中的变量、对象、引用
很多编程语言都有所谓的引用,对象,变量等概念.这些概念在强类型的语言中貌似并不是那么的重要,但是在动态类型的语言中,还是值得去仔细思考一下的 什么是变量 对于变量,在数学中我们已经了解过,就是一个值可 ...
- python一个对象只能被一个变量引用吗_python中的对象、变量、引用的问题
对象.变量.引用 对象 对象包括 不可变对象 和 可变对象.但从某种意义上来说,可变和不可变并不是对立关系. int,string,float,tuple 这四类属于 不可变对象.这里不可变的含义是: ...
- python变量赋值方式_python中变量的命令规制及变量的赋值方式
文章结构: 一.python中变量的命名规则 二.变量赋值的三种方式 三.python的垃圾回收机制 一.Python中变量的命令规则 变量名只能包含字母.数字和下划线,且不能以数字开头: 变量名不能 ...
- python函数中变量的作用域_Python中变量的作用域(variable scope)
此文目的 此文主要讨论和总结一下,Python中的变量的作用域(variable scope). 目的在于,通过代码,图解,文字描述,使得更加透彻的了解,Python中的变量的作用域: 以避免,在写代 ...
- python变量的作用_Python中的变量
Python中的变量是用来表示一个值的标识符.变量代表了计算机内存中的一个地址.变量允许在程序中访问其他对象,调用函数或执行其他运算. 1.变量命名规则 变量是Python中的标识符,它应该遵循标识符 ...
- python变量类型函数_python中的变量和数据类型
一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...
最新文章
- 九种东西吃多会...
- SQLyog连接Mysql8.0提示 Authentication plugin ‘caching_sha2_password‘ cannot be loaded
- php 去除中英文空格,php去除字符串首尾中英文空格程序_PHP教程
- 【MFC】类的层次结构图
- python 使用期物处理并发
- 数学要考多少分?才能考上985、211,很多高中生看完后沉默了......
- linux怎么编译sharedptr,如何使用智能指针(例如auto_ptr r shared_ptr)在Linux上使用C++生成链接列表数据结构?...
- ScrollView的学习
- 谜题27:变幻莫测的i值
- MedianBlur(中值滤波/百分比滤波器)
- 2019年第十二届中国大学生计算机设计大赛总结
- MATLAB-图像分割
- MAC docker 使用阿里加速器
- pyodbc mysql_pyodbc and mySQL
- 角色个人属性英文缩写
- 元组定义 元组运算符
- 几个比较实用的网址链接
- JAVA定义一个树形的结构_Java自定义树形结构
- 我的世界无限法则服务器怎么用,我的世界无限法则版
- Hystrix php,详解 hystrix-go 使用与原理
热门文章
- 红橙Darren视频笔记 模板模式的应用与BaseActivity
- java 并发编程框架
- 搭建JAVA Eclipse环境并创建JAVA第一个项目
- 解决windows预览体验计划页面空白问题
- mongodb数组操作符
- 三段式状态机_Verilog实战篇(5)——FIFO amp; 状态机
- python制作物联网控制软件下载_Python+树莓派制作IoT(物联网)门控设备
- 局域网网管软件_局域网安全管理面临的4大挑战
- excel两个指标相关性分析_我用Excel发现了数据分析的本质:回归分析
- linux输出和错误信息文件,Log4j配置将错误信息输出到指定文件中[linux tomcat]