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]中的元素进行访问

  • 相关阅读:
    Scala篇:Scala环境及IDEA配置
    大数据篇:Hive
    大数据篇:Flume
    大数据篇:Kafka
    15.百万考生成绩如何排序
    Tomcat 架构原理解析到架构设计借鉴
    服务设计思考:平台化
    Druid:通过 Kafka 加载流数据
    12.分而治之-归并排序
    11.经典O(n²)比较型排序算法
  • 原文地址:https://www.cnblogs.com/liyongjun/p/9657580.html
Copyright © 2011-2022 走看看