zoukankan      html  css  js  c++  java
  • Python for循环中的in

    for循环的语法格式如下:

    for iterating_var in sequence:
       statement(s)

    in 后面跟的是一个序列,如列表、元组、字符串

    序列都有一个特征,就是可以进行索引操作,如sequence[0]、sequence[1]

    当for被执行时,iterating_var 依次被赋值sequence[0]、sequence[1]、……

    注意这里的赋值是浅拷贝

    看下面两个例子

    1.

    a = [[1,2]]
    for i in a:
        i[0] = 3
    print a

    [[3, 2]]

    这个循环只循环一次,因为列表a中只有一个元素,即a[0] = [1,2],可以用C语言思想去理解a[0]中存放的是列表[1,2]的地址

    所以i = a[0]时i中存放的也是列表[1,2]的地址,故i[0] = 3作用相当于a[0][0] = 3

    2.

    a = [1,2]
    for i in a:
        i = 5
    print a

    [1, 2]

    这里的i = 5,已经和a没有任何关系了,因为是浅拷贝,所以i只保存了a中元素的值,i再怎么改变也不会影响a

    所以print a 还是 [1,2]

    那为什么1中的[[1,2]]就变成[[3,2]]呢,那是因为i虽然只保存了a中的值(浅拷贝),但是在1中,a中的值如a[0]它本身就是[1,2]的地址,所以使用这个地址仍然可以通过索引对[1,2]中的元素进行访问

  • 相关阅读:
    2017ICPC沈阳赛现场赛 L-Tree (dfs)
    2019西北工业大学程序设计创新实践基地春季选拔赛 D(卢卡斯定理)
    Codeforces Round #454 (Div. 1) CodeForces 906D Power Tower (欧拉降幂)
    模板
    洛谷
    模板
    洛谷
    洛谷
    模板
    模板
  • 原文地址:https://www.cnblogs.com/liyongjun/p/9657580.html
Copyright © 2011-2022 走看看