zoukankan      html  css  js  c++  java
  • 我的python菜鸟之路4

    内存相关

    • 练习1的输出的结果有666(内部修改)
      • 因为v1、v2指定的是同一处内存
    • 练习2赋值而不修改内存地址
      • 重新赋值结果不变,修改内部元素结果改变
    练习1
    v1=[11,22,33]
    v2=v1
    v1.append(666)
    print(v2)
    结果为[11,22,33,666]
    
    练习2
    v1= [11,22,33]
    v2=v1
    v1=[1,2,3]
    print(v2)
    结果为[11,22,33]
    
    练习3
    v = [1,2,3]
    value = [1,2,v]
    v = [4,5,6]
    print(value)
    结果为:[1,2,[1,2,3]]
    
    练习4
    v = [1,2,3]
    value=[1,2,v]
    value[2]=666
    print(v)
    结果为[1,2,3]
    
    • print(id())
      • 查看内存地址

    python的小数据池

    • python为了优化性能,认为常用数字(-5~256)或者字符串使用频率较高,便不再开辟新的内存
      • 列表、字典、集合不会存在此现象
    v1=1
    v2=1
    id(vi) = id(v2)
    

    问题:== 与 is的区别

    • == 是值相当
    • is 是内存地址相等

    深浅拷贝

    • 浅拷贝:只拷贝数据的第一层

    • 深拷贝:拷贝嵌套层次的所有的数据(可变)

    • 对于字符串、布尔类型、整型深浅拷贝是没有区别的

    v1 = [1,2,3,4,[1,2,3]]
    import copy
    v2 = copy.copy(v1)
    print(id(v1),id(v2))
    print(id(v1[4]),id(v2[4]))
    60886984 60920712
    30792744 30792744
    v1 = [1,2,3,4,[1,2,3]]
    import copy
    v2 = copy.deepcopy(v1)
    print(id(v1),id(v2))
    print(id(v1[4]),id(v2[4]))
    60985416 60886984
    60985640 60985672
    
    • 可以看出浅拷贝只拷贝最外层,也就是说最外层地址不一样,而内部元素的地址是一样的
    • 深拷贝拷贝嵌套内的,在无嵌套时,深浅拷贝是一样的
    • 对于元组而言,如果没有可变元素,地址不变,里面有可变类型,其所嵌套的地址改变
    • 字典中,键可以直接循环,值不可以
    info = {'name':'王钢蛋','sex':'女'}
    if i  in info:
    print('在')
    
    • 判断”王钢蛋“是否在字典的值中
    flag = True
    info = {'name':'王钢蛋','sex':'女'}
    for i in info.values():
        if '王钢蛋'== i:
            flag = True
            break
    if flag:
        print('在')
    else:
        print('不再')
    
    • 判断一个字符串是不是集合
    v1 = {'杨大大',,"常大大","李太白"}
    if type(v1)== set:
        print("这是集合")
    else:
        print("这不是集合")
    
    
    • 输出的结果均不变,注意与列表区分开
    v1 = "yang"
    v2 = v1
    v1.upper()
    print(v2,v1)
    
  • 相关阅读:
    android 75 新闻列表页面
    android 74 下载文本
    android 73 下载图片
    android 72 确定取消对话框,单选对话框,多选对话框
    android 71 ArrayAdapter和SimpleAdapter
    android 70 使用ListView把数据显示至屏幕
    maven如何将本地jar安装到本地仓库
    Centos6.7搭建ISCSI存储服务器
    解决maven打包编译出现File encoding has not been set问题
    MySQL 解决 emoji表情 的方法,使用utf8mb4 字符集(4字节 UTF-8 Unicode 编码)
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/13138732.html
Copyright © 2011-2022 走看看