七天学会Python基础-第三天2/2-对基础数据类型的补充
-
基础数据类型的补充
-
字符串str补充方法(练习一遍即可)以下方法均不改变原来字符串
- str1.capitalize(),将str1字符串的首字母进行大写,其余小写
- srt1.swapcase(),将字符串的大小写进行反转
- str1.title(),将字符产中的每个单词的首字母进行大写
- str1.center(20,'*'),居中,将两端使用✳进行到20长度
- str1.find('a'),在str1中查找a的索引,若有多个a,则找到第一个a就返回,找不到则返回-1
- str1.index('a'),在str1中查找a的索引,若有多个a,则找到第一个a就返回,找不到则报错
-
元组tuple的补充
- 若创建元组时,括号内中有一个元素,则需要加一个逗号才会被识别为元组,否则括号会被识别为运算符,相当于去掉括号
- tup1.count(3),计算元组中3出现的次数
- tup1.index('a'),通过元素找索引,找到第一个就返回
-
列表list补充
- lst1.count('a'),pass
- lst1.index('a'),pass
- lst1.sort(reverse=True),排序,默认从小到大,加上参数(reverse=True)就是逆向排序,即从大到小
- lst1.reverse(),翻转列表
- lst1+lst2,将lst1和lst2进行合并,
- lst1*3,将lst1列表中的元素复制3次,
- 补充:循环删除列表索引为计数的元素
- del
- for 倒序
- 思维置换:将索引为复数的元素放到一个新的列表中
- 循环一个列表时,最好不要改变列表的大小,这样会影响最终效果
-
字典dict的补充
-
dic1.update(),可以是增,改
- dic1.update(hoby="运动",height="170"),增加键值对
- dic1.update(name="新名字"),在这里,name在dic1中已经存在,所以此时进行的是更新操作。
- dic1.update([(1,'a'),(2,'b'),(3,'c'),(4,'d')]),此语法底层使用的是元组的拆包,将元组第一个元素作为键,第二个元素作为值传入字典
- dic1.update(dic2),将dic2合并入dic1,操作dic1若有相同键,则进行更新,没有相同键则进行添加(有则覆盖,无则添加)
-
dic1=dict.formkeys("abc",100),第一个参数为可迭代对象,作为键使用,第二个参数作为值使用,
- 注意,值只有一个,而且三个键指向的都是同一个地址
-
注意,在循环一个字典时,若改变字典的大小则会直接报错
- 若想循环操作这个字典,则可以将想要操作的字典先放进一个列表,然后循环此列表对字典进行操作
- 以下方法同样可以
for key in list(dic.keys()): if 'k' in key: dic.pop(key) print(dic) -
按照占用空间占用分(从低到高)
- 数字,字符串,集合,元组,列表,字典,
-
按存值个数区分
- 标量/原子类型
- 数字,字符串
- 容器类型
- 列表,元组,字典、
- 标量/原子类型
-
按可变不可变区分
- 可变
- 列表,字典
- 不可变
- 数字,字符串,元组,布尔值
- 可变
-
按照访问顺序区分
- 直接访问
- 数字
- 顺序访问(序列类型)
- 字符串,列表,元组
- key值访问(映射类型)
- 字典
- 直接访问
-
-
-
数据类型之间的转换
- 前面加数据类型进行强制转换即可
- 所有数据类型转化为bool位False的
- 0,{},[],set(),'',None
-
编码的进阶
- ASCII码:包含英文字母,数字,特殊字符,与0101010对应关系
- 一个字符用一个字节表示
- GBK:只包含本国文字(以及英文字母,数字,特殊字符)与0101010对应关系
- 英文一个字符用一个字节表示
- 中文一个字符用两个字节表示
- Unicode:包含全世界所有文字与2进制0101001的对应关系
- 一个字符用四个字节而表示
- UTF-8:包含全世界所有的文字与二进制0101001的对应关系(最少用8位,一个字节表示一个字符)
- 英文:一个字符用一个字节表示
- 欧洲文字(葡萄牙,西班牙等)一个字符用两个字节表示
- 亚洲文字,一个字符用三个字节表示
- 数据在内存中全部是以Unicode编码的,除去bytes,但是当你的数据用于网络传输或者存储到硬盘中必须是以非Unicode编码(utf-8,gbk等等)。
- content:'hello'
- 内存中的编码方式:Unicode
- 表现形式:hello
- bytes:
- 英文
- 内存中的编码方式:非Unicode
- 表现形式:b'hello '
- 中文
- 转换方法:str1.encode('utf-8')
- 表现形式:b'\ex4\xb8\xad\xe5\x9b\xbd'
- 英文
- 规定:不能以Unicode方式直接进行传输,想要进行传输和存储必须先转化成一个特殊的数据类型:bytes然后进行存储
- content:'hello'
- 编码与解码的应用
- str->bytes,编码(为了将数据进行传输和存储),将字符串类型转换为bytes类型
- s2=s1.encode('utf-8'),将s1通过encode方法进行编码
- bytes->str,可以加载到内存中进行编辑,若解码使用的字符集和编码使用的字符集不同会报错,将bytes类型转换成str类型
- s2=b1.decode("utf-8")
- gbk->utf-8
- 先转化成Unicode,再由Unicode转化成UTF-8
- s=b1.decode("gbk")
- b2=s.encode("utf-8")
- str->bytes,编码(为了将数据进行传输和存储),将字符串类型转换为bytes类型
- ASCII码:包含英文字母,数字,特殊字符,与0101010对应关系

浙公网安备 33010602011771号