Python-数据类型内置方法(2)

元组(tuple)

元组是不可变的列表,只可以存不可以修改,早起元组类型占用内存小

定义:tup = tuple((1,2,3))

内置方法:

  • 索引取值

    name_tuple = ("qinyj","age",18)
    print(name_tuple[0])
  • 索引切片

    name_tuple = ("qinyj","age",18)
    print(name_tuple[0:2])
  • 长度len

    name_tuple = ("qinyj","age",18)
    print(len(name_tuple))
  • 循环

    name_tuple = ("qinyj","age",18)
    for i in name_tuple:
        print(i)
  • count

    name_tuple = ("qinyj","age",18)
    print(name_tuple.count("qinyj"))
  • index

    name_tuple = ("qinyj","age",18)
    print(name_tuple.index("qinyj"))

有序但不可变类型。

字典(dict)

定义:dic = dict()

内置方法:

优先掌握:

  • 按key存取值:可存可取(可查可修改)

    dic = {'a': 1, 'b': 2}
    print(f"first dic['a']: {dic['a']}")
    
    dic['a'] = 3
    print(f"second dic['a']: {dic['a']}")
  • 长度len

    dic = {'a': 1, 'b': 2}
    print(len(dic))
  • 成员运算

    dic = {'a': 1, 'b': 2}
    print("a" in dic)
  • 删除del、pop指定元素

    dic = {'a': 1, 'b': 2}
    del dic["a"]
    print(dic)
  • keys/values/items

    dic = {'a': 1, 'b': 2}
    print(dic.keys())
    print(dic.values())
    print(dic.items())
    
    for i,k in dic.items:
        print(i,k)
  • fo 循环:循环的是key

  • get:查指定元素,如果没有返回None,可设默认值

需要掌握

  • get
  • pop删除
  • popitem删除末尾键值对
  • update 扩展字典。类似list 中extend方法
  • formkeys
  • setdefault 有指定key不会改变值;无指定key则改变值

集合(set)

优先掌握

  1. 长度len
  2. 成员运算in和not in
  3. |并集、union
  4. &交集、intersection
  5. -差集、difference
  6. ^对称差集、symmetric_difference
  7. ==
  8. 父集:>、>= 、issuperset
  9. 子集:<、<= 、issubset

深浅拷贝

拷贝(赋值)

>>> lt1 = ["a","b","c"]
>>> print(id(lt1))
43366216
>>> lt2 = lt1
>>> print(id(lt2))
43366216

>>> lt1.append("d")
>>> print(lt1)
["a","b","c","d"]

>>> print(lt2)
["a","b","c","d"]


# 43366216  内存地址一样。两个变量指向同一个内存地址,一个变,另一个也改变

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

浅拷贝

>>> import copy
>>> lt1 = ["a","b","c",["d","e"]]
>>> print(id(lt1))
43434056
>>>
>>> lt2 = copy.copy(lt1)
>>> print(id(lt2))
43449224

>>> lt1[-1].append("f")
>>> print(lt1)
['a', 'b', 'c', ['d', 'e', 'f']]

>>> print(lt2)
['a', 'b', 'c', ['d', 'e', 'f']]
>>>

如果lt2是lt1的浅拷贝对象,lt1内部的不可变元素发生了变化,lt2不变,

如果lt1内部的可变元素发生了变化,lt2也跟着改变。

深拷贝

>>> import copy
>>> lt1 = ["a","b","c",["d","e"]]
>>> print(id(lt1))
43434440

>>> lt2 = copy.deepcopy(lt1)
>>> print(id(lt2))
43447368

>>> lt1[-1].append("f")

>>> print(lt1)
['a', 'b', 'c', ['d', 'e', 'f']]

>>> print(lt2)
['a', 'b', 'c', ['d', 'e']]
>>>

如果lt2是lt1的深拷贝对象,lt1内部的任何元素发生了变化,lt2不会跟着改变。

  • 拷贝

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

  • 浅拷贝

    如果lt2是lt1的浅拷贝对象,lt1内部的不可变元素发生了变化,lt2不变,

    如果lt1内部的可变元素发生了变化,lt2也跟着改变。

  • 深拷贝

    如果lt2是lt1的深拷贝对象,lt1内部的任何元素发生了变化,lt2不会跟着改变。

总结

存值个数

存值个数数据类型
单个值数字、字符串
多个值列表、元组、字典、集合

有序 or 无序

有序 or 无序数据类型
有序字符串、列表、元组
无序数字、字典、集合

可变 or 不可变

可变 or 不可变数据类型
可变列表、字典、集合
不可变数字、元组、字符串

访问类型

访问类型数据类型
直接访问数字
顺序访问字符串、列表、元组
key值访问字典

拷贝/浅拷贝/深拷贝 都是针对可变类型数据而言。

转载于:https://www.cnblogs.com/qinyujie/p/11529360.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值