zoukankan      html  css  js  c++  java
  • python笔试做错的题目

    a = [1,2,3]
    b = a
    print(id(a),id(b),a == b)
    print(a,b)
    b = b + [1,2,3]
    print(a,b)
    print(id(a),id(b),a == b)
    
    print("====================================")
    a = [1,2,3]
    b = a
    print(id(a),id(b),a == b)
    print(a,b)
    b += [1,2,3]
    print(a,b)
    print(id(a),id(b),a == b)
    

     执行结果:

    1939675767304 1939675767304 True
    [1, 2, 3] [1, 2, 3]
    [1, 2, 3] [1, 2, 3, 1, 2, 3]
    1939675767304 1939676988616 False
    
    ====================================
    
    
    1939675767368 1939675767368 True
    [1, 2, 3] [1, 2, 3]
    [1, 2, 3, 1, 2, 3] [1, 2, 3, 1, 2, 3]
    1939675767368 1939675767368 True
    

      我第一个觉得a,b都是同时指向列表[1,2,3],对b修改,a也会同时修改。所以结果应该是

    [1,2,3,1,2,3][1,2,3,1,2,3]但是结果确实错误的。

    对于操作b = b+ [1,2,3]

    先计算b+[1,2,3]然后 b再指向这个结果。所以b的结果会发生改变。

    b += [1,2,3]则是改变了b的值,又因为b =a,所以a,b的结果会同时改变。

  • 相关阅读:
    C#:字符串(转载9)
    C# 数组(转载8)
    C#:可空类型(转载7)
    XD 05
    eclipse 快捷键 干货
    XD 04
    XD 03
    model, mapper, xml
    02 MyBatis & Druid
    注解 用到
  • 原文地址:https://www.cnblogs.com/hamish26/p/11245256.html
Copyright © 2011-2022 走看看