一、元组
-元组的创建方式
-直接小括号 t=('python','hello',90)
-使用内置函数tuple() t=tuple(('python','hello',90))
-只包含一个元组的元素需要使用逗号和小括号 t=(10,)
-为什么要将元组设计成不可变序列
-在多任务环境下,同时操作对象时不需要加锁
-因此,在程序中尽量使用不可变序列
-注意事项
-元组中存储的是对象的引用
-如果元组中对象本身不可对象,则不能再引用其它对象
-如果元组中对象本身是可变对象,则可变对象的引用不允许改变,但数据可以改变
-元组的遍历
-元组是可迭代对象,所以可以使用for-in进行遍历
二、集合 无序的
-什么是集合
-python语言提供的内置数据结构
-与列表、字典一样都属于可变数据类型
-集合是没有value的字典
-创建方式
-直接{}
s={'python','hello',90}
-使用内置函数set()
-集合的相关操作
-集合元素的判断操作
-in或not in
-集合元素的新增操作
-调用add()方法,一次添加一个元素
-调用update()方法至少添加一个元素
-集合元素的删除操作
-调用remove()方法,一次删除一个指定元素,如果指定的元素不存在抛出keyerror
-调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不抛出异常
-调用pop()方法,一次删除一个任意元素,即删除谁随机
-调用clear()方法,清空集合
-集合之间的关系
-两个集合是否相等
-可以使用运算符==或!=进行判断
-一个集合是否是另一个集合的子集
-可以调用方法issubset进行判断
-B是A的子集
-一个集合是否是另一个集合的超集
-可以调用方法issuperset进行判断
-A是B的超集(即B是A的子集)
-两个集合是否是没有交集
-可以调用方法isdisjoint进行判断(有交集为false 没有交集为true)
-集合之间的数学操作
-交集 intersection &
-并集 union |
-差集 difference - 在A中去掉B中含有的元素
-对称差集 symmetric_difference ^ A中独有的元素和B中独有的元素
-集合生成式
-用于生成集合的公式
-将{}修改为[]就是列表生成式
-没有元组生成式
三、列表、字典、元组、集合的总结
-列表 可变 可重复 有序 []
-元组 不可变 可重复 有序 ()
-字典 可变 Key不可重复 value可重复 无序 {key:value}
-集合 可变 不可重复 无序 {}
四、字符串的驻留机制
-字符串
-在python中字符串是基本数据类型,是一个不可变的字符序列
-什么叫字符串驻留机制呢?
-仅保留一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留机制对相同的字符串
-只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量
-驻留机制的几种情况
-字符串的长度为0或1时
-符合标识的字符串
-字符串只在编译时进行驻留,而非运行时
-[-5,266]之间的整数数字
-sys中的intern方法强制2个字符串指向同一个对象
-pycharm对字符串进行了优化处理
-在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符中的长度,然后再拷贝,只new一次对象,效率要比+效率高
-字符串的查询操作方法
-查询方法
-index()
-查找子串substr第一次出现的位置,如果查找的子串不存在时,则抛出valueerror
-rindex()
-查找子串substr最后一次出现的位置,如果查找的子串不存在时,则抛出valueerror
-find()
-查找子串substr第一次出现的位置,如果查找的子串不存在时,则返回-1
-rfind()
-查找子串substr最后一次出现的位置,如果查找的子串不存在时,则返回-1
-字符串的大小写转换操作方法
-upper()
-所有字符变大写
-lower()
-所有字符变小写
-swapcase()
-所有大写变小写,小写变大写
-capitalize()
-第一个字符变大写,其余的变小写
-title()
-每个单词的第一个字符变大写,每个单词剩余字符换小写
-字符串内容对齐操作的方法
-center()居中对齐,第一个参数指定宽度,第二个参数指定填充字符,第二个参数可选,默认是空格,如果设置宽度小于实际宽度则返回原字符串
-ljust()左对齐,第一个参数指定宽度,第二个参数指定填充字符,第二个参数可选,默认是空格,如果设置宽度小于实际宽度则返回原字符串
-rjust()右对齐,第一个参数指定宽度,第二个参数指定填充字符,第二个参数可选,默认是空格,如果设置宽度小于实际宽度则返回原字符串
-zfill()右对齐,左边用0填充,该方法只接收一个参数,用于指定字符串的宽度,如果指定的宽度小于等于字符串长度,返回字符串本身
-字符串劈分操作的方法
-split()
-从字符串的左边开始劈分,默认劈分字符是空格字符串,返回的值都是一个列表
-以通过参数sep指定劈分字符串是的劈分符
-通过参数maxsplit指定劈分字符时的最大劈分次数,在经过最大劈分之后,剩余的子串会单独作为一部分
-rsplit()
-从字符串的右边开始劈分,默认劈分字符是空格字符串,返回的值都是一个列表
-以通过参数sep指定劈分字符串是的劈分符
-通过参数maxsplit指定劈分字符时的最大劈分次数,在经过最大劈分之后,剩余的子串会单独作为一部分
-判断字符串操作的方法
-isidentifier() 判断字符串是不是合法的标识符
-isspace() 判断指定的字符串是否全部由空白字符串组成(回车、换行、水平制表符等)
-isalpha() 判断指定的字符串是否全部由字母组成
-isdecimal() 判断指定的字符串是否全部由十进制数字组成
-isnumeric() 判断指定的字符串是否全部由数字组成
-isalnum() 判断指定的字符串是否全部由字母和数字组成
-字符串操作的其他方法
-字符串替换 replace() 第一个参数指定被替换的子串,第二个参数指定替换子串的字符串,替换前的字符串不变,第三个参数是最大替换次数
-字符串合并 join() 将列表或元组中的字符串合成一个字符串
-字符串的比较操作
-运算符 >、<、>=、<=、==、!=
-比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,一次比较下去,直到两个字符串中的字符不相等时
-其比较结果就是两个字符串的比较结果,两个字符串中的所有后续字符将不再被比较
-比较原理:两个字符进行比较时,比较的是其ordinal value(原始值),调用内置函数ord可以得到指定字符ordinal value。与内置函数
-ord对应的是内置函数chr调用内置函数chr时指定ordinal value可以得到其对应的字符