• Day 07 元组/字典/集合/python深浅拷贝


    元组

    作用

    存储数据,元组一创建就被写死了,元组的值不可以被修改

    定义

    在()内用逗号隔开多个元素,元素可以是任意数据类型

    内置方法

    1. 索引取值
    2. 切片
    3. 长度len
    4. 成员运算
    5. for循环
    6. count
    7. index

    元组与列表的区别

    列表可变的原因是:索引所对应的值的内存地址是可以改变的

    元组不可变得原因是:索引所对应的值的内存地址是不可以改变的,或者反过来说,只要索引对应值的内存地址没有改变,那么元组是始终没有改变的。

    字典

    作用

    存放多个元素,但是每一个元素都有一个对应的key值,key具有描述功能

    定义

    在{}内用逗号隔开每一个键值对,每一个键值对有以key:value的形式存放,key只能为不可变数据类型,一般为字符串型,value可以为任意数据类型

    内置方法

    1. 按key取值/修改/增加

    2. 长度len

    3. 成员运算

    4. 删除del

      dic = {'a': 1, 'b': 2}
      del dic['a']
      print (dic)
      

      {'b': 2}

    5. 键keys(), 值values(), 键值对items()

    dic = {'a': 1, 'b': 2}
    print(dic.keys())
    print(dic.values())
    print(dic.items())
    

    dict_keys(['a', 'b'])
    dict_values([1, 2])
    dict_items([('a', 1), ('b', 2)])

    1. for循环

    2. get

      dic = {'a': 1, 'b': 2}
      print(dic.get('a'))
      print(dic.get('c'))
      

      1
      None

    3. update

      dic1 = {'a': 1, 'b': 2}
      dic2 = {'c': 1, 'b': 3}
      dic1.update(dic2)
      print(dic1)
      

      {'a': 1, 'b': 3, 'c': 1}

      注意:有相同的键会直接替换成 update 的值

    4. fromkeys

      dic = dic.fromkeys('a', 'b', 'c')
      print(dic)
      

      {'a': None, 'b': None, 'c': None}

    5. setdefault

      dic = {'a': 1, 'b': 2}
      print(dic.setdefault('a', 3))
      print(dic.setdefault('c', 3))
      print(dic)
      

      1
      3
      {'a': 1, 'b': 2, 'c': 3}

    集合

    作用

    可以用来去重,但是去重后集合内元素的顺序会被打乱

    定义

    {}内用逗号隔开多个元素,每个元素必须是不可变类型

    内置方法

    1. 长度len

    2. 成员运算

    3. |并集

    4. &交集

    5. -差集

    6. ^对称差集

    7. ==

    8. 父集>, >=

    9. 子集<, <=

    10. add 增加元素

    11. remove 删除元素,若元素不在集合中则会报错

    12. difference_update

      s = {'a', 'b', 'c'}
      s1 = {'a', 'd', 'e'}
      s.difference_update(s1)  # 集合s除去与集合s2共同的元素
      print(s)
      

      {'c', 'b'}

    13. discard 删除元素,若元素不在集合中则不会发生变化

    14. isdisjoint 判断集合是否有共同部分,有就返回True,没有就返回False

    python深浅拷贝

    注意:拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的

    可变与不可变

    值变id不变,为可变数据类型;值变id也变,则为不可变数据类型

    拷贝

    如果l2是l1的拷贝对象,则l1内部的任何数据类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值变id不变。

    浅拷贝

    如果l2是l1的浅拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,则l2会跟着改变。

    深拷贝

    如果l2是l1的深拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,l2也不会变,即l2永远不会因为l1的变化而变化。

  • 相关阅读:
    CLR c++/CLI 如何返回多个返回值
    在php 中显示array数据
    MVC已死,该是用MOVE的时候了
    拿到网规证书后,办北京户口的遭遇。
    利亚德股票限售股解禁表
    32位MSSQL数据库备份如何在64位MSSQL数据库上恢复
    利用DNS实现负载均衡
    购买服务器具体和什么参数有关
    简单来总结一下C++与C#之间的区别
    c# 操作DOS ping命令判断与指定主机是否可以通信
  • 原文地址:https://www.cnblogs.com/2222bai/p/11529074.html
Copyright © 2020-2023  润新知