source: study/Programming/Python/basic/数据类型.md
数据类型
Python中数据类型可以分为数字型和非数字型
数字型
- 整型 int
- 浮点型 float
-  布尔型 bool真 True 非0--非零即为真 假 False 0
- 复数型 complex
非数字型
- 字符串
- 列表
- 元组
- 字典
在Python中,所有非数字型变量都支持以下特点
- 都是一个序列sequence,也可以理解为容器
- 取值[]
- 遍历 for in
- 计算长度、最大值/最小值、比较、删除
- 链接 +重复*
- 切片
1 列表
1.1 列表的定义
- list列表 是Python中使用最频繁的数据类型,在其他语言中通常叫做数组
- 专门用于存储一串信息
- 列表用[]定义,数据之间用,分割
- 列表的索引从0开始- 索引就是数据在列表中的位置编号,索引被称为下标 注意: 从列表中取值时,如果超出索引范围,程序会报错 
 
- 索引就是数据在列表中的位置编号,索引被称为下标 
1.2 列表常用操作
| 序号 | 分类 | 方法 | 说明 | 
|---|---|---|---|
| 1 | 增加 | list.insert(索引,数据) | |
| list.append(数据) | 在末尾添加数据 | ||
| list.extetnd(list2) | 将列表2的数据追加到列表上 | ||
| 2 | 删除 | del list[索引] | 删除指定索引的数据 | 
| list.remove(数据) | |||
| list.pop | 删除末尾数据 | ||
| list.pop(索引) | 删除指定索引数据 | ||
| list.clear | 清空列表 | ||
| 3 | 修改 | list[索引] = 数据 | 修改制定索引的数据 | 
| 4 | 统计 | len(list) | 列表长度 | 
| list.count(数据) | 数据在列表中出现的次数 | ||
| list.index(数据) | 查询数据的索引 | ||
| 5 | 排序 | list.sort() | 升序排序 | 
| list.sort(reverse=True) | 降序排序 | ||
| list.reverse() | 反转,逆序 | ||
| 6 | 其他 | list.copy | 复制 | 
2 元组
2.1 元组的定义
- Tuple(元组)与列表类似,不同之处在于元组的元素不修改 - 元组表示多个元素组成的序列
- 元组在Python开发中,有特定的使用场景
 
- 用于存储一串信息,数据直接使用,分割
- 使用()定义元组
- 元组的索引从0开始
- 索引就是数据在元组中的位置编号
创建空元组
info_tuple=()
创建只包含一个元素的元组,需要记得添加,
info_tuple=(1,)
2.2 元组的使用
元组一旦被定义,则该元组的元素不可修改。
| 序号 | 分类 | 方法 | 说明 | 
|---|---|---|---|
| 1 | tuple.count() | ||
| 2 | tuple.index() | 
2.3 循环遍历
- 取值就是从元组中获取存储在指定位置的数据
- 遍历就是从头到尾依次从元组中获取数据
- 在Python中,可以使用for循环遍历所有非数字型类型的变量:列表、元组、字典及字符串
- 提示:在实际开发中,除非能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多
2.4 应用场景
- 尽管可以使用for in遍历元组,但开发中更多场景为:
- 函数的参数和返回值,一个函数可以接受多个任意多个参数,或者一次返回多个数据
- 格式字符串,格式化字符串后面的()本质上就是一个元组
- 让列表不可以被修改,以保护数据安全
3 字典
3.1 字典的定义
- 和列表的区别 - 列表是有序的对象集合
- 字典是无序的对象集合
 
- 字典用{}定义、
- 字典使用键值对存储数据,键值对之间使用,分隔- 键key是索引
- 值value是数据
- 键 和 值 之间用:分隔
- 键必须是唯一的
- 值可以是任何数据类型,但键只能使用字符串、数字或元组
 
- 键
test = {
	"name": "test",
	"age": 99,
	"gender": True,
	"height": 188} 
3.2 字典的增删改查
3.3 字典的遍历
3.4 字典的应用
- 使用多个键值对,描述一个物体的相关信息–描述更复杂的数据信息
- 将多个字典放在一个列表中,再进行遍历,在循环体内针对每一个字典进行相同的处理
4 字符串
4.1 字符串定义
- 字符串就是一串字符,是编程语言中表示文本的数据类型
- 在Python中可以是使用一对双引号",也可以使用一对单引号'定义一个字符串- 虽然可以使用\"或者\'做字符串的转义,但是在实际开发中:- 如果字符串内部㤇使用",可以使用'定义字符串
- 如果字符串内部需要使用',可以使用"定义字符串
 
- 如果字符串内部㤇使用
- 可以使用索引获取一个字符串指定位置的字符,索引从0开始
- 也可以使用for循环遍历字符串中的每一个字符
 
- 虽然可以使用
4.2 字符串常用操作
1) 判断类型
| 方法 | 说明 | 
|---|---|
| string.isspace() | 如果string只包含空格,则返回True | 
| string.isalnum() | 如果string至少有一个字符并且所有字符都是字母或者数字则返回True | 
| string.isalpha() | 如果string至少有一个字符并且所有字符都是字母则返回True | 
| string.isdecimal() | 如果string只包含数字则返回True,全角数字 | 
| string.isdigit() | 如果string只包含数字则返回True,全角数字 (1) \u00b2 | 
| string.isnumeric() | 如果string只包含数字则返回Ture,全角数字 汉字数字 | 
| string.istitle() | 如果string是标题化的(每个单词的首字母大写),则返回True | 
| string.islower() | 如果string中包含至少一个区分大小写的字符,并且所有这些字符都是小写,则返回True | 
| string.isupper() | 如果string中包含至少一个区分大小写的字符,并且所有这些字符都是大写,则返回True | 
| string.isascii() | 如果string中的所有字符串都是ascii,则返回True | 
| string.isidentifier() | 如果string是有效的标识符,则返回Ture | 
| string.isprintable() | 如果string中所有字符都是可打印的或者字符串为空,则返回True | 
2) 查找和替换
| 方法 | 说明 | 
|---|---|
| string.startswith() | 检查字符串是否以 xx开头,是则返回True | 
| string.endswith() | 检查字符串是否以 xx结尾,是则返回True | 
| string.find(str,start=0,end=len(string) | 检测str是否包含在string中,如果start和end指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1 | 
| string.rfind() | 同上,不过是倒序开始查找 | 
| string.index(str,start=0,end=len(string) | 与上面类似,只不过str不在string中会报错 | 
| string.rindex() | 同上 | 
| string.replace(old_str,new_str,num=sting.count(old) | 把string的内容替换,注意num的长度 | 
3) 大小写替换
| 方法 | 说明 | 
|---|---|
| string.capitalize() | 把字符串的第一个字符大写 | 
| string.title() | 把字符串的每个单词首字母大写 | 
| string.lower() | 转换string中所有大写->小写 | 
| string.upper() | 转换string中所有小写->大写 | 
| string.swapcase() | 反转string中的大小写 | 
4) 文本对齐
| 方法 | 说明 | 
|---|---|
| string.ljust(width) | 返回一个原字符串左对齐,并使用空格填充至长度width的新字符串 | 
| string.rjust(width) | 返回一个原字符串右对齐,并使用空格填充至长度width的新字符串 | 
| string.center(width) | 返回一个原字符串居中,并使用空格填充至长度width的新字符串 | 
5) 去除空白符
| 方法 | 说明 | 
|---|---|
| string.lstrip() | 截掉左边(开始)的空白字符 | 
| string.rstrip() | 截掉右边(开始)的空白字符 | 
| string.strip() | 截掉左右两边的空白字符 | 
6) 拆分和链接
| 方法 | 说明 | 
|---|---|
| string.partition(str) | 把字符串分成一个3元素的元组 (str前,str,str后) | 
| string.rpartition(str) | 类似,倒序 | 
| string.split(str="",nmu) | 以str为分隔符切片string,如果num有指定值,则仅分隔num+1个子字符串,str默认包含 \r \n \r\n和空格 | 
| string.rsplit() | |
| string.splitlines() | 按照行(\r \n \r\n)分隔,返回一个包含各行作为元素的列表 | 
| string.join(seq) | 以string作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串 | 
7 其他–暂未整理
| 方法 | 说明 | 
|---|---|
| string.casefold() | |
| string.expandtabs() | |
| string.zfill() | |
| string.maketrans() | |
| string.count() | |
| string.format() | |
| string.encode() | |
| string.format_map() | |
| string.removesuffix() | |
| string.removeprefix() | |
| string.translate() |