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循环里的变量无法被引用”的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值