zoukankan      html  css  js  c++  java
  • Python第七天

    1. 先看看赋值运算

      l1 = [1, 2, 3]

      l2 = l1

    打印 l1 和 l2 指向的内存地址

      print(id(l1))

      print(id(l2))

     也可以用 is 判断 l1 和 l2 是否是指向同一个内存地址

    print( l1  is  l2)   True

      从打印结果上来看, l1 和 l2 是相同的

      对 l2 进行添加操作

      l2.append(4)

      打印 l1 结果 是 [1, 2, 3, 4]

      注意: 赋值运算不是 copy 操作,

       不管赋值给多少个变量, 这些变量都是指向同一个内存地址

    2. 深copy

       引入模块 copy

        import copy

    l1 = [1, 2, 3, ['a', 'b']]
    l2 = copy.deepcopy(l1)
    print(l2)

    深copy ,就是 把所有的值都copy出来, 给另一个变量,
    两个变量之间,除了数值相同外, 其他都不一样,
    对其中一个变量的更改,不会影响到另一个变量

    3. 浅copy
    和深copy对应的就是 浅copy

    l1 = [1, 2, 3, ['a', 'b']]
    l2 = l1.copy()

    print(l1 is l2) False
    print(l1[-1] is l2[-1]) True

    浅copy时,变量第一层内存数据地址是不相同的,
    但是第第二层之后的所有数据,都是指向同一个内存地址.

    l2[-1]是列表, 对其进行 增 删,改操作
    l1[-1] 也是一样的, 因为他们就是同一个列表,




       

      

  • 相关阅读:
    700.二叉搜索树中的搜索
    645.错误的集合
    567.字符串的排列
    560.和为K的子数组
    518.零钱兑换 II
    516.最长回文子序列
    509.斐波那契数
    503.下一个更大元素 II
    496.下一个更大元素 I
    leetcode 1171 Remove Zero Sum Consecutive Nodes from Linked List
  • 原文地址:https://www.cnblogs.com/golzn2018/p/9456111.html
Copyright © 2011-2022 走看看