Tiny_Lu
不忘初心

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)
    

  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)
    

  5. setdefault

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

    1
    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)
    

  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的变化而变化。

posted @ 2019-09-16 19:08  二二二二白、  阅读(121)  评论(0编辑  收藏  举报