第三章 数据类型

3.1 数字

官方文档说明: https://docs.python.org/zh-cn/3/reference/datamodel.html

3.1.1 数字类型
类型 进一步划分 说明
整型数 int、bool 基本数据类型
浮点型数 None 基本不使用,知道即可
复数 None 基本不使用,知道即可
3.1.2 整型数
  • 说明

    ​ 此类对象表示数学中整数集合的成员 (包括正数和负数)。整型数可细分为两种类型:整型 ([int])此类对象表示任意大小的数字,仅受限于可用的内存 (包括虚拟内存);布尔型 ([bool])此类对象表示逻辑值 False 和 True,布尔类型是整型的子类型,两个布尔值在各种场合的行为分别类似于数值 0 和 1,例外情况只有在转换为字符串时分别返回字符串 'False'或 'True'。整型数表示规则的目的是在涉及负整型数的变换和掩码运算时提供最为合理的解释。

1 int类型
  • 总结

    特性 说明
    功能 数学计算
    定义 任意大小的数字
    元素特性 无元素概念,且只能为数字
    归属的数据结构 原子型
    存储特点 内存中连续的存储空间
    可变性 不可变
    有序性 不存在有序无序概念,即无序
    可迭代性 不可迭代
  • 独有方法

    方法 return 功能
    num.bit_length(self) 数字 返回一个数字采用二进制位表示时所需要的最少二进制位数;
  • 双下方法

    构造函数

      '''
      syna:  int([x],[base=10])
      func:
          将数字或字符串转换成一个整数,若不给定参数返回数字0;
          x为数字则调用x.__init__(),若为浮点数则直接省略小数位;
          x不是数字或给定base=n参数时,则x必须为字符串,且字符串中的字符必须存在于n进制的数字内;
          base参数默认值为10,有效值范围:2-36,0进制从字符串中读取进制标识符号然后完成字符串转换成数字;
      '''
    

    特性方法

    方法类别 特性方法 功能
    构造函数 _init_(self,x,base=10) 构造函数
    可变性 _hash_(self) 不可变
    有序性(索引属性调用) None 无序
    可迭代性 None 不可迭代
    点号属性调用 _getattribute_(self,name) 支持点号调用属性

    运算类方法

    运算类别 方法 retrun 功能
    一元运算 __neg__(self) -self 一元减法
    一元运算 _pos_(self) +self 一元加法
    二元算术 有,参见附录双下方法 int 全部支持
    二元逻辑 布尔值 无双下方法,但是全部支持
    二元比较 有,参见附录双下方法 布尔值 全部支持
    二元赋值 int 无双下方法,但是全部支持
    二元位 有,参见附录双下方法 int 全部支持
    二元成员运算 不支持 不支持
    二元身份运算 布尔值 支持

    ​ int类型除了不支持成员运算之外,其余所有的运算均支持,其中系统内置了赋值运算的双下方法,但是int没有赋值运算的双下方法,身份运算无系统内置的双下方法;

    数学计算类

    方法 return 功能
    _abs_(self) abs(self) 取绝对值
    _divmod_(self,value) return (self//value,self%value) divmod(self,value)
    _rdivmod_(self,value) (value//self,value%self) divmod(value,self)
    _round_(self,number) round(self,number) 科学计算

    数据类型强制转换

    方法 return 功能
    _bool_(self) 布尔值 int转换为布尔类型
    _float_(self) float int转换为float

    其他

    方法 return 功能
    _int_(self) int(self)
    _index_(self)
    _getnewargs_(self)
    _format_()
  • 公有方法

    方法 功能
    _new_(self,cls) 创建一个新的cls类的对象;
    _repr_() repr(),交互式命令行调用此双下方法;
    _sizeof_(self) 返回一个对象占用的内存大小,byte为单位;
2 bool

总结

​ bool为int的一个子类;其实例化之后仅仅只能创建两个对象:True/False;bool的对象继承class int的属性方法,其中True对应int的数字1,而False对应int的0,之后参与各种运算;

3.1.3 浮点型
  • 说明

    ​ 此类对象表示机器级的双精度浮点数。其所接受的取值范围和溢出处理将受制于底层的机器架构 (以及 C 或 Java 实现)。Python 不支持单精度浮点数;支持后者通常的理由是节省处理器和内存消耗,但这点节省相对于在 Python 中使用对象的开销来说太过微不足道,因此没有理由包含两种浮点数而令该语言变得复杂。

3.1.4 复数类型
  • 说明

    ​ 此类对象以一对机器级的双精度浮点数来表示复数值。有关浮点数的附带规则对其同样有效。一个复数值 z 的实部和虚部可通过只读属性 z.realz.imag 来获取。

3.2 字符串

3.2.1 字符串类型
解释器类别 类型
python2 str(带有解释器编码属性的字符串),unicode(unicode字符串)
python3 str(unicode字符串),bytes(非Unicode编码的字符串),byetearray(可变bytes)
3.2.2 字符串总结
1 str

总结

特性 说明
功能 存储少量的数据进行操作
定义 引号内的任何内容
元素特性 任何
归属的数据结构 序列
存储特点 内存中连续的存储空间
可变性 不可变---不可原处修改
有序性 有序----可进行索引和切片
可迭代性 可迭代

独有方法--45个

方法类型 方法总览 数量
字符大小写转换 [upper,lower,casefold,swapcase,capitalize,title] 6
查找、修改操作 [find,rfind,index,rindex,startswith,endswith,count
replace,maketrans,translate,strip,lstrip,rstrip]
13
格式化操作 [center,ljust,rjust,zfill,expandtabs,format,format_map] 7
拼接、切割操作 [join,split,rsplit、splitlines,partition,rpartion] 6
编码 [encode] 1
字符串内容判定 [isalnum,isalpha,isascii,isdigit,isdecimal,isnumeric,isidentifier,
isupper,islower,istitle,isprintable,isspace]
12

字符大小写转换--6个

方法 return 功能
capitalize(self) str 字符串首字符转换为大写,其余全部转换为小写
title(self) str 将字符串中特殊字符分隔的词,词首大写,非词首全部小写
特殊字符:26个英文字符之外的所有的字符
upper(self) str 将字符串中所有的字符大写
lower(self) str 将字符串中所有的字符小写,只能完成常用字符的转换
casefold(self) str 将字符中所有的字符小写,完成所有国家语言字符的转换;
swapcase(self) str 将字符串中所有的字符:大写转小写,小写转大写;

字符串格式化--7个

方法 return 功能
center(self,width,fillchar) str 按照width指定的宽度输出,并且保持self居中对齐,左右两边采用fillchar填充width:默认为字符串本身的长度 fillchar=空格
ljust(self,width,fillchar) str 按照width指定的宽度输出,并且保持self左对齐,左右两边采用fillchar填充width:默认为字符串本身的长度 fillchar=空格
rjust(self,width,fillchar) str 按照width指定的宽度输出,并且保持self右对齐,左右两边采用fillchar填充width:默认为字符串本身的长度 fillchar=空格
zfill(self,width) str 按照width指定的宽度输出,并且保持self右对齐,左右两边采用数字0进行填充width:默认为字符串本身的长度
expandtabs(self,tabsize=8) str 制表符:制表符,对字符串中的\t进行特殊处理,每tabsie个字符构成一个分组;一个分组中,若无\t则原样输出;若一个tabsize个字符范围内有\t存在,则\t及其前的字符构成一个分组,\t其后的字符划入下一个分组,\t所在的分组中若\t前面的字符个数为n,则将\t替换为tabsize-n个空格,用于构成一个分组;
format(self,*args,**kwargs) str 字符串格式化的一种方法;具体参见字符串的格式化
format_map(self,dict) str 字符串的格式化方法,用法同字符串中format()一致,区别在于:占位符中的key只能为字符串,同时format_map()传参时必须采用字典进行传参;

查找、修改操作---13个

方法 return 功能
find(self,sub,start=None,stop=None) index/-1 在start-stop指定的子字符串中,将sub作为一个整体去self中查找,查找到则返回sub的第一个字符所在的位置的index值;查找不到则返回-1;
rfind(self,sub,start=None,stop=None) index/-1 find的反向--从右向左查找
index(self,sub,start=None,stop=None) index/ValueError 功能类似于find,唯一的区别在于查找不到则报错
rindex(self,sub,start=None,stop=None) index/ValueError 功能类似于rfind,唯一的区别在于查找不到则报错
startswith(self,sub,start=None,stop=None) 布尔值 判定start-stop指定的子字符串是否以sub开头
endswith(self,sub,start=None,stop=None) 布尔值 判定start-stop指定的子字符串是否以sub结尾
count(self,sub,start=None,stop=None) int 统计sub在start-stop指定的子字符串中出现的次数;
replace(self,old,new,max=-1) str 将self中old子字符串采用new子字符串进行替换,默认会替换所有old子字符串,采用max指定替换的次数;
strip(self,char=空白字符)
空白字符=\n \r \t
str 采用for循环去遍历char设定的字符,一旦self的首部和尾部的字符与之匹配则删除,直到char的元素遍历完成;默认删除self首部和尾部的空白字符;
lstrip(self,char=空白字符) str 采用for循环去遍历char设定的字符,一旦self的首部的字符与之匹配则删除,直到char的元素遍历完成;默认删除self首部的空白字符;
rstrip(self,char=空白字符) str 采用for循环去遍历char设定的字符,一旦self尾部的字符与之匹配则删除,直到char的元素遍历完成;默认删除self尾部的空白字符;
maketrans(self,str1,str2) 字符映射关系字典 将str1与str2中的元素建立一一映射的关系,str1 str2必须要登场,然后存放在一个字典对象中,用于给translate()使用;
translate(self,tab)
tab参数:maketrans()返回的映射关系对象
str 调用maketrans()生成的字符映射关系,将self中的所有含str1中的字符,转换为对应str2中的字符;

字符串拼接、切割操作--6个

方法 return 功能
join(self,str) str 字符串拼接,调用for循环遍历str的每个元素,然后采用self填充到iterable的每个元素之间,iterable的每个元素要求是字符串,否则语法错误;
split(self,sep,maxsplit=-1) list 采用指定的sep去分隔self,分隔之后产生多个子字符串以及多个分隔符,删除分隔符后,将多个子字符串作为列表的元素返回;maxsplit定义sep分隔的次数,-1则是进行最大次分隔;
rsplit(self,sep,maxsplit=-1) list 功能等同于split(),区别在于rsplit是从右向左开始分隔,输出的list与分隔的方向仍然是从左向右进行输出list的每个元素;
splitlines(self) list 功能等同于split(),唯一的区别在于splitlines()不能指定分隔符,即分隔符只能为换行符号\n;
partition(self,sep) tuple 采用指定的sep去分隔self,且只分隔一次,然后将sep前的子字符串,分隔符,分隔符后的子字符串作为元祖的元素,返回包含有三个元素的元祖;
rpartition(self,sep) tuple 功能等同于partition()区别在于rpartition()是从右向左进行字符串分隔;

编码 ---1个

方法 return 功能
encode(self,encoding) bytes 将Unicode字符串编码程能够直接网络传输和存储的bytes对象;

字符串中元素类型判定---12个

方法 return 功能
isdecimal(self) 布尔值 判定字符串中至少有一个字符,且字符串中的字符全为十进制数字;
十进制数字:0-9
isdigit(self) 布尔值 判定字符串中至少有一个字符,且字符串中的字符数字;
数字:0-9、①②..类数字
isnumeric(self) 布尔值 判定字符串中至少有一个字符,且字符串中的字符数字;
数字:0-9,①②..,中文的简繁体数字(一 二...,壹贰...等)
isalpha(self) 布尔值 判定字符串中至少有一个字符,且字符串中仅仅只包含有字母或汉字组成;
isalnum(self) 布尔值 判定字符串中至少有一个字符,且字符串中仅仅包含:字母、汉字、数字构成;
isascii(self) 布尔值 判定字符串中的字符是否权威ascii字符,其中空也是ascii字符,即空串也会返回True;
isupper(self) 布尔值 判定字符串中至少有一个字符,且字符串中所有的英文字母全部为大写,其他字符忽略;
islower(self) 布尔值 判定字符串中至少有一个字符,且字符串中所有的英文字母全部为小写,其他字符忽略;
istitle(self) 布尔值 判定字符串中的字符,是否同title()后的结果一致;
isidentifier(self) 布尔值 判定字符串中的字符的构成是否同变量的命名相同,即字符串中的字符构成类似于变量名;
isspace(self) 布尔值 判定字符串中至少有一个字符,且字符串中全为空白字符;
空白字符:\n \r \t
isprintable(self) 布尔值 判定字符串中所有的字符是否全部为可打印字符;
不可打印字符:ascii表中,前31个不可打印字符之外其余全部为可打印字符;

双下方法

构造函数

 def __init__(self, value='', encoding=sys.getdefaultencoding, errors='strict'): 
        """
        原理:
        	简单的将object外面加上引号实现;
        底层:
        	若对象有__str__(self)定义,则返回object.__str__(),反之返回repr(object)
        """

特性方法

方法类别 特性方法 功能
构造函数 __init__(self,enconding,errors) 构造函数
可变性 _hash_(self) 不可变
有序性(索引属性调用) _getitem_(self,name) 有序性,支持索引方式调用属性
可迭代性 _iter_(self) 可迭代
点号属性调用 getattribute(self,name) 支持点号调用属性

运算类方法

方法类别 特性方法 功能
算术运算 [_add__,__mod__,__mul_,__rmod__,__rmul__] 字符串加法、乘法
关系比较 [_ge__,__gt__,__le__,__lt__,__eq__,__ne_] 比较字符串在ascii码表中的次序
成员 [_contain_] 判定子序列是否存在于字符串中;
身份 None 支持
赋值 None 支持
None 不支持
逻辑 None 支持

其它

方法 返回值 功能
_format_(self,format_spec) str format()内置函数触发解释器调用此双下方法;用于格式化特定的字符串;
要将此内置方法与str的独有方法format()区分开;

公有方法

方法 功能
_new_(self,cls) 创建一个新的cls类的对象;
_repr_() repr()触发解释器调用, repr() 交互式命令行调用此双下方法;
将一个对象采用字符串的形式予以显示;
_sizeof_(self) 返回一个对象占用的内存大小,byte为单位;
_len_(self) 返回对象中包含的元素的个数;
_str_(self) str() print() format()都会调用此方法,返回一个字符串
将一个对象采用字符串的形式表示;
_getnewargs_(self)
2 bytes
  • 总结

    1 bytes其实质即是字符串,只不过此种字符串为底层真正存储在磁盘或在网络上传输的非Unicode编码的二进制bit流;

    2 str经过编码转换成bytes然后才能真正的写磁盘和网络传输,bytes经过解码转换成内存中能够进行运算的字符串;

    3 bytes的数据特性和能够调用的双下方法,同str完全相同或类似;

    4 bytes存在的意义是: 针对非文本内容的文件,如音频 视频 图片等非字符编码方式的未知编码文件,采用bytes直接进行处理;

    需要掌握的方法

    方法 return 功能
    decode(self,encoding,errors) str 采用指定的编码方式,将bytes解码程内存中能够进行运算的str;

3.3 列表

  • 总结

    特性 说明
    功能 存储大量的数据进行操作
    定义 []内逗号分隔多个元素
    元素特性 元素可以为任意类型
    归属的数据结构 序列、容器
    存储特点 链式存储结构
    可变性 可变--可原处修改
    有序性 有序--可索引和切片
    可迭代性 可迭代

    独有方法--11个

    方法类型 方法总览 数量
    增加元素 [append,extend,insert] 3
    删除元素 [clear,remove,pop] 3
    查找元素 [index,count] 2
    修改元素 None 0
    元素排序 [sort,reverse] 2
    深浅拷贝 [copy] 1

    增加元素

    方法 return 功能
    append(self,item) None 将item追加到list中;
    extend(self,iterable) None for遍历iterable,将iterable中的元素追加到list中;
    insert(self,index,item) None 将item插入到list的索引号为index位置;
    + : 被加数只能为list list 将另一个列表的元素添加到本列表的内存备份中;然后返回新的列表
    原列表并不发生改变;
    +=:被加数可以为任意iterable list for遍历iterable中的元素,添加到self标识的列表的内存备份中,然后返回新的列表,原列表并不发生改变;
    *: 被乘数只能为数字 list 将当前列表中的元素作为一个整体,该整体重复出现n此,返回新的重复了n次的列表,原列表并不发生改变;

    ​ 补充说明:针对列表,不能采用索引增加元素,会产生indexerror;列表的索引切片操作只能针对已经存在的index;即只能采用索引进行修改元素,而不能通过索引增加元素;

    删除元素

    方法 return 功能
    clear(self) None 清空列表中的所有元素;
    remove(self,value) None 根据元素的值,删除特定的元素;若值不存再,则触发ValueError;
    pop(self,index) value 根据索引删除特定位置的元素,并返回该被删除的元素;索引不存再触发KeyError;
    del self[index] None 索引、切片方式删除元素;

    查找

    方法 return 功能
    index(self,value,start,stop) index/ValueError 将value作为list的一个元素进行判定,
    判定该元素在list中的最小索引值,若查找不到触发ValueError;
    count(self,value) int 返回value在list中表现为元素的次数;
    self[index] value 返回特定索引位置元素的值;

    修改元素

    方法 return 功能
    self[index]=value None 修改list中index标识的位置的元素的值;
    index标识的位置的元素必须存在,否则触发IndexError
    特别注意:不能采用此种方法去向列表添加元素

    排序

    方法 return 功能
    sort(self,key=None,reverse=False) None 根据key指定的规则,队列表进行排序;
    key: 默认值None,即按照ascii表的次序进行比较
    key:接受的参数可以为函数名或匿名函数
    reverse: 升序排列列表之后是否反转,即变成降序排序
    reverse(self) None 将列表的元素进行反转,即次序倒换;

    深浅拷贝

    方法 return 功能
    copy(self) list 列表浅拷贝;
  • 双下方法

    构造函数

    def __init__(self, iterable):
            """
            原理:
            	iterable省略:则创建一个空列表;
            	iterale为可迭代对象:
            		self =[]
            		for item in iterable:
            			self.append(item)
            """
            pass
    

    特性方法

    方法类别 特性方法 功能
    构造函数 _init_(self,iterable) 构造函数
    可变性 _hash_=None 可变
    有序性(索引属性调用) [__getitem__,__delitem__,__setitem__] 有序
    可迭代性 __iter__ 可迭代
    点号属性调用 _getattribute_(self,name) 支持点号调用属性

    运算类方法

    运算类别 方法 功能
    算术运算 [__add__,__mul__,__rmul__] 列表整体的拼接和重复次数操作;
    关系比较 [__ge__,__gt__,__le__,__lt__,__eq__,__ne__] 全部支持
    成员运算 [__contains__] 支持
    身份运算 None 支持
    位运算 None 不支持
    赋值运算 [__iadd__,__imul__] 仅仅支持两个
    逻辑运算 None 支持
  • 公有方法

    方法 功能
    _new_(self,cls) 创建一个新的cls类的对象;
    _repr_() repr(),交互式命令行调用此双下方法;
    _sizeof_(self) 返回一个对象占用的内存大小,byte为单位;
    __len__(self) len()触发_len_()双下方法,返回self中元素的个数;
    __reversed__(self) 内置函数reverse()触发此方法,反转iterable中的元素;

3.4 元祖

  • 总结

    特性 说明
    功能 只读列表,用于存储只读数据
    定义 ()内逗号分隔多个元素,每个元素后面必须要带逗号;
    元素特性 元素可以为任意类型
    归属的数据结构 序列、容器
    存储特点 链式存储结构
    可变性 不可变--不可原处修改
    有序性 有序--可索引和切片
    可迭代性 可迭代

    ​ 补充说明:元祖内的每个元素后必须要带上逗号,原因参照如下案例;

    >>> m=(1)
    >>> n=(1,)
    >>> type(m)
    <class 'int'>
    >>> type(n)
    <class 'tuple'>
    >>> 
    

    独有方法--2个

    方法类型 方法总览 数量
    增加元素 None 0
    删除元素 None 0
    查找元素 [index,count] 2
    修改元素 None 0
    方法 return 功能
    index(self,value,start,stop) index/ValueError 将value作为list的一个元素进行判定, 判定该元素在list中的最小索引值,若查找不到触发ValueError;
    count(self,value) int 返回value在list中表现为元素的次数;
    self[index] value 返回特定索引位置元素的值;
  • 双下方法

    构造函数

    def __init__(self, iterable):
            """
            原理:
            	若没有给定参数,则创建一个空元祖;
            	若给定iterable参数,则采用for遍历iterable中的元素追加到一个空列表中,然后返回该元祖;
    

    ​ """
    ​ pass

    特性方法

方法类别 特性方法 功能
构造函数 _init_(self,iterable) 构造函数
可变性 _hash_(self) 不可变
有序性(索引属性调用) __getitem__ 有序
可迭代性 __iter__() 可迭代
点号属性调用 _getattribute_(self,name) 支持点号调用属性

运算类方法

运算类别 方法 功能
算术运算 [__add__,__mul__,__rmul__] 元祖整体的拼接和重复次数操作;
关系比较 [__ge__,__gt__,__le__,__lt__,__eq__,__ne__] 全部支持
成员运算 [__contains__] 支持
身份运算 None 支持
位运算 None 不支持
赋值运算 None 元祖不可变,故不支持赋值运算
逻辑运算 None 支持

公有方法

方法 功能
_new_(self,cls) 创建一个新的cls类的对象;
_repr_() repr(),交互式命令行调用此双下方法;
__len__(self) len()触发_len_()双下方法,返回self中元素的个数;
__getnewargs__(self)

3.5 字典

  • 总结

    特性 说明
    功能 存储大量关系型数据进行处理
    {}内逗号分隔的多个元素,每个元素有kv组成,kv采用冒号分隔;
    元素特性 key: 可hash类型---不可变,且一个dict object中不能存在相同的key--key唯一性
    一个字典中,同一个key对应不同的值,则初始化的结果只存在一个该key,value为后一个value
    value: 任意类型
    归属的数据结构 容器
    存储特点 hash表存储结构
    可变性 可变--可原处修改
    有序性 version3.6之前: 无序
    version3.6之后: 有序
    可迭代性 可迭代

独有方法--11个

方法类型 方法总览 数量
增加修改操作 [setdefault,update] 2
删除元素 [clear,pop,popitem] 3
查找元素 [get] 1
键值对操作 [keys,values,items] 3
深浅拷贝 [copy] 1
创建字典 [fromkeys] 1

增加修改元素

方法 return 功能
setdefault(self,key,default=None) value/default key存在:返回该key对应的value,不修改字典;
key不存在:将key:default作为一个键值对插入到字典中同时返回default指定的值;default默认值为None;
update(self,iterable) None iterable仅有两种类型:dict 或 特殊的可迭代对象(每个一级元素中有且只有两个2级元素) ;
dict: for k in interable: self[k]=iterable[k]
特殊iterable: for k,v in itereale: self[k]=v
遍历iterable,若key存在:则更新该键值对;若key不存在:则添加;
self[key]=value None key存在:则为修改
key不存在:则为增加

删除元素

方法 return 功能
clear(self) None 清空字典
pop(self,key,default)
default无默认值
value/default/KeyError key存在则删除元素,key不存在则不操作字典
key存在:返回对应的value
key不存在,defalut不指定:返回KeyError
key不存在,default指定:返回指定的default
popitem(self) (key,value)/KeyError 随机的删除字典的一个元素,同时将字典的kv值
采用进行返回;若字典为空触发KeyError
del self[key] None 删除字典中key标识的键值对;

查找

方法 return 功能
get(self,key,default=None) value/default key存在:返回对应的value
key不存在:返回default,default默认为None;
self[key] value 返回key对应的值;

键值对操作

方法 return 功能
keys(self) dict_keys([k1,k2,k3....]) 获取一个存储有字典所有key的可迭代对象;
values(self) dict_values([v1,v2,v3...]) 获取一个存储有字典所有value的可迭代对象;
items(self) dict_items([(k1, v1), (k2, v2)...]) 获取一个容器对象,该对象中的每个元素采用元祖存放了字典的键值对,其中该元祖的第一个元素额为key,第二个元素为value;

深浅拷贝

方法 return 功能
copy(self) dict 字典浅拷贝;

创建字典

方法 return 功能
dict.fromkeys(iterable,default=None) dict对象 D={}
for key in iterable: D[key]=default
default的默认值为None;

双下方法

构造函数

	def __init__(self, seq=None, **kwargs): 
        """
        dict([iterable])
        	参数:
        		iterable:省略,创建一个空字典;
        		iterable为dict:
        			for key in iterable:
        				self[key]=iterable[key]
        		iterable为每个元素为含有且只含有两个子元素的对象:
        			for key,value in iterable:
        				self[key]=value
        """
        pass

特性方法

方法类别 特性方法 功能
构造函数 _init_(self,iterable) 构造函数
可变性 _hash_=None 可变
有序性(索引属性调用) [_getitem__,__delitem__,__setitem_] 有序
可迭代性 _iter_ 可迭代
点号属性调用 getattribute(self,name) 支持点号调用属性

运算类方法

方法 返回值 功能
关系比较运算 [__ge__,__gt__,__le__,__lt__,__eq__,__ne__]
成员运算 [__contains__]

公共方法

方法 功能
_new_(self,cls) 创建一个新的cls类的对象;
_repr_() repr(),交互式命令行调用此双下方法;
_len_(self) len()触发__len__()双下方法,返回self中元素的个数;
_sizeof_(self) 返回对象在内存空间中占用的大小,bytes为单位;

3.6 集合

1 set
  • 总结

    特性 说明
    功能 存储大量数据,去重处理;
    定义 {}内多个元素采用逗号分隔;
    元素特性 不重复,不可变-即可hash类型
    归属的数据结构 容器
    存储特点 hash式存储结构
    可变性 可变;集合是可变的,但是其元素必须是不可变类型;
    有序性 无序
    可迭代性 不可跌倒

    独有方法--17个

    方法类型 方法总览 数量
    增加 [add,update] 2
    删除元素 [clear,discard,remove,pop] 4
    深浅拷贝 [copy] 1
    集合(交差并补) [intersection,difference,union,symmetric_difference]
    [intersection_update,difference_update,symmetric_difference_update]
    [issuperset,issubset,isdisjoint]
    10

    增加修改元素

    方法 return 功能
    add(self,item) None 向集合中添加一个元素;
    update(self,iterable) None for遍历iterable,将iterable中的每个元素添加到集合中;

    删除操作

    方法 return 功能
    clear(self) None 清空集合中的所有的元素;
    discard(self,item) None 删除特定的元素,元素存在则删除,元素不存在不做任何事情;
    remove(self,item) None/KeyError 删除指定的元素,元素存在则删除,元素不存在触发ValueError异常;
    pop(self) value 随机删除集合中的一个元素,并返回该元素;

    深浅拷贝

    方法 return 功能
    copy(self) set 集合浅拷贝

    集合操作

    方法 return 操作符 功能
    intersection(self,iterable) set & self集合与iterable构成的集合求交集;
    self不变,返回交集
    return self & set(iterable)
    itersection_update(self,iterable) set & self=self.intersection(iterable)
    将self集合与iterable构成的集合求交集的结果赋值给self
    self &= set(iterable); return self
    difference(self,iterable) set - self集合与iterable构成的集合求差集:
    self不变,返回差集;
    差集:即存在于一个集合而不存在与另一个集合中的元素;此函数执行的结果是返回存在于self集合中而不存在与iterable代表的集合中的元素构成的集合;
    return self - itrerable
    difference_update(self,iterable) set - self=self.difference(iterable)
    self -= set(iterable)
    union(self,iterable) set | self集合与iterable构成的集合求并集;
    self不变,返回并集;
    update(self,iterable) set | self=self.union(iteable)
    self |= set(iterable)
    symmetric_difference(self,iterable) set ^ self集合与iterable构成的集合求补集;
    self不变,返回补集
    补集:并集-交集
    retrun self ^ set(iterable)
    symmetric_difference_update(self,iterable) set ^ self ^=set(iterable);return self
    issuperset(self,iterable) 布尔值 判定self是否为set(iterable)的父集;
    issubset(self,iterable) 布尔值 判定self是否为set(iterable)的子集
    isdisjoint(self,iterable) 布尔值 判定self与set(iterable)是否没有交集,若没有交集返回True,有交集返回False;

双下方法

构造函数

    def __init__(self, seq=()): # known special case of set.__init__
        """
        set() -> new empty set object
        set(iterable) -> new set object
        set([iterable])
		原理:
			s=set()
			for item in iterable:
				s.add(item)
        pass

特性方法

方法类别 特性方法 功能
构造函数 _init_(self,iterable) 构造函数
可变性 _hash_=None 可变
有序性(索引属性调用) None 无序
可迭代性 _iter_ 可迭代
点号属性调用 _getattribute_(self,name) 支持点号调用属性

运算类方法

方法 方法 功能
关系比较运算 [__ge__,__gt__,__le__,__lt__,__eq__,__ne__]
成员运算 [__contains__]
算术运算 [__sub__,__rsub__,] 集合交差并补操作
位运算 [__and__,__or__,__xor__,__rand__,__ror__,__rxor__] 集合交差并补操作
赋值运算 [__isub__,__iand__,__ior__,__ixor__] 集合交差并补操作

公共方法

方法 功能
_new_(self,cls) 创建一个新的cls类的对象;
_repr_() repr(),交互式命令行调用此双下方法;
_len_(self) len()触发__len__()双下方法,返回self中元素的个数;
_sizeof_(self) 返回对象在内存空间中占用的大小,bytes为单位;
2 frozenset

总结

​ forzenset其实质即是集合-不可变集合;其类似于tuple与list的关系;

3.7 数据类型强制转换

类型 方法 底层原理
int int(x.base=10) 将数字或字符串转换成一个整数,若不给定参数返回数字0;
x为数字则调用x.init(),若为浮点数则直接省略小数位;
x不是数字或给定base=n参数时,则x必须为字符串,且字符串中的字符必须存在于n进制的数字内;
base参数默认值为10,有效值范围:2-36,0标识从字符串中读取进制标识符号然后完成字符串转换成数字;
str str(object) 将对象转换为字符串;
底层原理:直接给object外面加上引号构建;
list list(iterable) 将对象转换为列表;
底层原理: [item for item in iterable]
tuple tuple(iterable) 将对象转换为元祖;
底层原理: for遍历itearble将每个元素作为元祖的元素构建元祖;
set set(iterable) 将对象转换为集合;
底层原理:
dict dict(iterable) 将对象转换为字典;
iterable为字典:
D={}; for k in iterable: D[k]=iteable[k]
iteable为每个元素仅仅含有两个2级元素:
D={}; for k,v in iteable: D[k]=v
posted @ 2019-12-24 14:43  大兵0815  阅读(107)  评论(0)    收藏  举报