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的结果会同时改变。

  • 相关阅读:
    vue 基础补充
    正则
    vue 指令
    函数式编程FP 初探
    .? ?? es2020
    vue alfont scss
    网络安全靶场通关指南
    Java 程序设计——站内短信系统
    Java 程序设计——登录系统
    动态规划法解找零钱问题
  • 原文地址:https://www.cnblogs.com/hamish26/p/11245256.html
Copyright © 2011-2022 走看看