第二章python数据类型详解
一、字符串
- 单引号和双引号、三引号都可以定义字符串
- 三引号支持输出换行
“”"
am Tom""" - 单双引号不支持
‘I’
‘am’
//输出I am - ’ 当有三个’加一个\转译中间的//如’i’m tom ’
二、下标
又叫索引,就是编号:精确找到一串字符中的某个字符
- 字符串变量[n]//找字符串中的第n个数据
三、切片
是指对操作对象截取其中一部分的操作。字符串、列表、元组都可用
- 序列[开始位置下标:结束位置下标:步长]//注意取的数据不包括结束位置下标
- 不写步长默认步长为1
- 不写开始位置默认从0开始
- 不写结束表示选取到最后
- 都不写表示所有
- 如果步长为负数,从后往前
- -1代表最后一个数据,依此类推
- 如果开始结束的方向和步长方向相反不能选出数据
四、常用操作方法
- 查找
- 字符串查找:查找字串在字符串中的位置或出现的次数
- find()找字串是否在字符串中,在返回第一个字串开始下标,不在返回-1
- 字符串序列.find(字串,开始位置下标,结束位置下标)
- index()查找和find一样不过没有找到就报错
- 字符串序列.count(字串,开始位置下标,结束位置下标)//找字串出现次数
- rfind()和find()一样不过是从右边开始找
- rindex()和rfind()类似
怎么返回目标字串的所有字串????写一个循环or利用切片 - 字符串修改:指的就是通过函数的形式修改字符串中的数据
- replace()替换
字符串序列.replace(旧字串,新字串,替换次数)
替换次数不写代表全部替换。
replace有返回值,需要去接受,调用不会修改值,说明字符串是不可变数据类型。 - split()分割,丢失分割字符,返回一个列表,但可以直接打印
字符串序列.split(分割字符,分割次数) - join()//合并列表里面的数据为一个大字符串
连接的字符或字串.join(多字符串组成的序列)//返回一个字符串,可以直接打印输出
调用方式字符串.函数 - capitalize():将字符串第一个字符转成大写,后面的字符都变成小写//
- title()//每个单词首字母大写
- lower():将字符串中大写转小写
- upper():小写转大写
- lstrip():删除字符左侧空白字符
- rstrip():删除字符右侧空白字符
- strip():删除字符串两侧空白字符
填充: - ljust():返回一个原字符串左对齐,并指定字符(默认空格)填充至对应长度的新字符
字符串序列.ljust(长度,‘填充字符’)
rjust()右对齐
center()中间对齐
判断: - startswith():检查字符串是否以某个字串开头,只要开头对应就返回true
字符串序列.startswith(字串,开始位置下标,结束位置下标)
endswith():结尾判断 - isalpha():字符串至少有一个字符,所有字符都是字母返回真
- isdigit():如果字符串只包含数字返回true
- isalnum():字符串全是字符或者数字返回true
- isspace():如果字符串中只包含空白则返回true
五、列表//列表数据为可变类型
列表的应用场景
列表的格式
列表的常用操作
列表的循环遍历
列表的嵌套使用
[数据1,数据2,…]//列表可以存不同类型的数据
-
查找
1.下标 序列名[]
2.index()和count()与字符串一样//count在列表调用只有一个参数
3.len(序列名),统计序列数据个数
4.判断某个数据是否存在
‘子序列’ in 序列名字//判断在返回True
‘子序列’ not in 序列名字//判断不在返回True
判断账号注销
增加:增加指定数据到列表中
5.append()//结尾加数据
列表序列.append(数据)
如果追加数据是数列整个数列加入
extend()把数据拆来加到结尾,只拆开一级
6.insert()//指定位置插入
序列名字.insert(位置下标,数据) -
删除:
7.del 目标 or del (目标)//删除目标
删除下标也可以
8.序列名字.pop(下标)删除指定下标的数据,如果不指定下标,默认删除最后一个数据,pop()最后会返回删除数据
9.序列名字.remove(‘数据’)只删除第一个数据
10.序列名字.clear() 清空列表 -
修改:
11.序列名[n] = ’ 替换字符串’修改指定下标
12.序列名字.reverse()逆序排列
13.序列名字.sort(key = None,reverse = False)排序
不写参数默认升序排序
False升序,True降序 -
复制:
14.列表序列名.copy()
15.为什么要复制,数据来之不易 -
列表的循环遍历//按顺序依次访问到每一个数据
16.while/for -
列表嵌套:
17.序列名字 = [[’’,’’,’’],[’’,’’,’’],[’’,’’,’’]]
18.列表嵌套数据查询
序列名字[][][] //大列表小列表小小列表的下标
作业1随机分配办公室:8位老师,随机分配到三个办公室
六、元组tuple元组的数据是不能修改的
元组的应用场景
定义元组
元组的常见操作
- t1 = (数据1,数据2,数据3)//可以是不同的类型
- 元组里面一定要加逗号,不然()没有逗号相当于无效括号
- 查找 下标 index() 、count() 、len()
- 元组里面列表的数据可以修改(’’,[])//列表可以修改
七、字典//可变数据类型
字典的应用场景//不支持下标无论数据如何变化只用找到对应的键值对
创建字典的语法
字典常见操作
字典的循环遍历
1.{‘键值对1’:‘数据1’,‘键值对2’:‘数据2’}
2.创建空字典变量 = {} or 变量 = dict()
- 增
1.字典序列[key]=值 key存在修改这个值,不存在增加这个值 - 删
1.del(删除字典或删除字典中指定键值对)
del 字典名字[‘键值对’] :
2.字典名字.clear()清空字典 - 改
1.字典序列[key]=值 - 查:
1.key值查找 字典名字[‘键值对’]
2.get()
字典序列.get(key,默认值)
如果当前查找的key不存在则直接返回默认值,省略默认值则返回None
3.keys()
字典序列.keys()//查看字典所有的键值对,返回可迭代对象
4.字典序列.values()//查看字典的所有值
5.字典序列.items()//查找字典中所有的键值对,返回可迭代对象,里面的数据是元组,元组数据1是字典的key,数据2是value
字典的循环遍历:
1.遍历字典的key
2.遍历字典的value
3.遍历字典的元素
for 变量1,变量2 in 字典序列.items():
print(f’{变量1}={变量2}’)
八、集合:可变类型数据
1.创建集合使用{,},或set()
集合没有顺序,不支持下标
集合中会去除重复数据
空集合只能用set(),{}是字典
集合会自动排序
-
增加数据
1.增加集合名字.add(单一数据)追加单一数据
2.updata(序列):增加的数据只能是是序列 -
删除数据
1.集合.remove(数据) 删除指定数据,不存在就报错
2.集合.discard(数据)删除指定数据,不存在不会报错
3.集合.pop()随机删除某个数据并返回该数据 -
查找数据
1.in
数据 in 集合//在集合里返回true
2.not in
数据 not in 集合//不在集合里返回true
九、公共操作
运算符
公共方法
容器类型转换
运算符
1.+ * 不支持字典
2.str1+str2相当于合并
3.list1+list2
4.tuple1+tuple2
5.str1 * 10//相当于复制10次
6.list1 * 10//
7.tuple * 10//
8.判断的序列 in 序列 //判断数据是否存在
9.not in//判断数据不存在
10.公共操作
- len(序列)//计算容器中元素个数
- del(序列名字 or 序列[n] )//删除
- max(序列名字)//返回容器中的元素最大值
- min(序列名字)//返回元素中的最小值
- range(start,end,step)//生成从start到end前的数字(不包括end数字),步长为step,供for循环使用
- enumerate(可遍历对象,start=0)//将一个可遍历的数据对象(如元组或字符串)组合为一个索引序列,同时列出数据和下标 //返回数据是元祖
- start参数用来设置遍历数据的下标起始值,默认为0
- for index,char in enumerate(list1,start = 1)
- 容器类型转换
1.tuple(转换序列)//将某个序列转换成元组
2.list(转换序列)//将某个序列转换成列表
3.set(转换序列)//将某个序列转换成集合
集合可以快速完成列表去重,集合不支持下标
十、推倒式
列表推导式 化简代码
1.[返回值 for xx in range()if XX %2 == 0]
多个for循环实现列表推导式等同于for循环嵌套
list
字典推导式//快速合并列表为字典,提取字典中目标数据
2.{xx1 : xx2 for …in…}
如果两个列表数据个数不同len(需要统计少的)
集合推倒式
3.{xx for xx in …}
集合有去重功能