为了账号安全,请及时绑定邮箱和手机立即绑定

不是说迭代取出的是元素本身吗?为什么打印出来没变化?哪位老师或大神给解释下,谢谢。

#不是说迭代取出的是元素本身吗?为什么打印出来没变化?哪位老师或大神给解释下,谢谢。
L = [0, 1, 2, 3, 4]
for t in L:
    print t is L[t]    
    t+=1    
    print t
print L
print t

输出:

True
1
True
2
True
3
True
4
True
5
[0, 1, 2, 3, 4]
5

打印的 t is L[t] 也是true,  既然t就是L[t]  但 结果 L 为啥没变化?



如下,L 是有变化的。

for t in L:

    L[t]+=1

    print t

print L

结果:

[1, 2, 3, 4, 5]




正在回答

4 回答

在 for 循环中,索引是从 0 开始直到数组或者集合结束,而循环中的 t 表示从第一个开始取的 L 中的值。

索引开始为 0,对应 L 中的值为 L[0] = 0, 

此时的 t 为 L 中的第一个元素,也是 0,

所以输出的 t is L[t], ( 0 is L[0] ) 是 true


楼主给出的代码:

print t is L[t];  #pirnt true

t += 1;  #t = 1, 2, 3, 4, 5

先后顺利需要理清楚,只改变了 t 的值,而没有改变 L[t] 的值。

当开始第二次循环时, t 又重新取得了 L 中的下一个元素,t += 1; 这一句也就没有什么意义了

希望我说的明白了

0 回复 有任何疑惑可以回复我~
#1

Sapce

我的理解是 t 是通过 for 循环的索引获得的值,只是一个变量,而不是指针指向了 L 中的某一个地址。所以 t 的变化与 L 中的元素值无关 对于楼主的第二段代码: for t in L: L[t] += 1; #确确实实是改变了对应的 L 中元素值,且每个值 + 1 print t; #楼主可以在这输出 print L 试一试,输出结果应该是 [1, 1, 2, 3, 4], [1, 2, 2, 3, 4], [1, 2, 3, 3, 4], [1, 2, 3, 4, 4], [1, 2, 3, 4, 5] print L; 以上结果已经过验证
2019-08-15 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5d4ec4a90001bcb509060287.jpg你本来没有对L有操作过啊,为什么要L有变化?

0 回复 有任何疑惑可以回复我~
#1

北方的郎n_n 提问者

迭代里写了,t is L[t] ,是true. 说明t 指向的 L[t] 的内存。按理说,改变 t 就 是 改变 L[t], 我第二段代码 改变 L[t] 对 L 是有影响的。 但是改变 t 是没影响的,为什么?说的够清楚了吗
2019-08-13 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5d4be7aa000166fb04230242.jpg

这句话是本身是啥意思。

0 回复 有任何疑惑可以回复我~

怎么可能是本身呢,L[]才是本身呢

0 回复 有任何疑惑可以回复我~
#1

北方的郎n_n 提问者

你看课程开始说的。下面我有截图。
2019-08-08 回复 有任何疑惑可以回复我~
#2

北方的郎n_n 提问者

t is L[t] 还是ture 呢??
2019-08-08 回复 有任何疑惑可以回复我~
#3

慕粉3863614 回复 北方的郎n_n 提问者

怎么说呢..确实不是索引,应该是类似于指针的东西吧
2019-08-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

不是说迭代取出的是元素本身吗?为什么打印出来没变化?哪位老师或大神给解释下,谢谢。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信