一、python高级数据类型简介
计算机是可以做数学计算的机器,因此计算机程序理所当然可以处理各种数值,但是计算机能处理的远不止数值,还可以处理文本、图像、音频、视频等各种各样的数据,在Python中,能够直接处理的数据类型有:数字、字符串、列表、元组、字典等。
二、序列
序列:在Python当中,序列就是一组按照顺序排列组合的值【数据集合】
在Python中存在三种内置的序列类型:字符串、列表、元组
序列优点:可以支持索引和切片的操作
序列特征:第一个正索引为0,指向的是左端,第一个索引为负数的时候,指向右端
三、字符串操作
字符串下标会越界,但是切片不会
1.切片
切片:截取字符串其中的一段内容,可以根据下标获取序列对象的任意【部分】数据
切片语法[起始下标;结束下标;步长]也就是[start;end;step],step默认是1
切片结束的内容不包括结束下标对应的数据,前闭后开,步长是指间隔几个下标获取一个字符
data_name="linran"
print(data_name[1:4])#左闭右开
print(data_name[1:])#从第2个字符到最后一个
print(data_name[:3])#从第一个到第3个
print(data_name[3:1:-1])#倒序输出,-号表示方向,从右边往左边输出
2.字符串常用方法
所有方法都是通过字符串变量名.方法()进行使用
capitalize() #首字母变大写 | isalnum() #判断是否是数字和字母 | islower() #判断是否是小写 | swapcase() #大写变小写,小写变大写 |
endswith/startswith() #是否x结束或开始 | isalpha() #判断是否是字母 | join() #循环取出所有值用**去连接 | lstrip/rstrip/strip() #移除左/右/两侧空白 |
find() #检测x是否在字符串中 | isdight() #判断是否是数字 | lower/up() #大小写转换 | split() #切割字符串 |
title() #把每个单词首字母变成大写 | replace(old,new,count=None) #old被换字符串,new替换字符串,count换多少个,无count表示全部替换 | count() #统计出现的次数 |
通过索引获取字符
test="linran"
print(type(test))
print('获取第一个字符%s'%test[0])
for item in test:
print(item,end=" ")
capitalize() #首字母变大写
name="linran"
print("姓名首字母变成大写%s"%name.capitalize())
lstrip/rstrip/strip() #移除左/右/两侧空白
name=" linran "
print("不去除空格%s"%name)
print("去除两边空格%s"%name.strip())
print("去除左边空格%s"%name.lstrip())
print("去除右边空格%s"%name.rstrip())
a=name,两者指向的是同一个字符串对象
name=" linran "
a=name #在此只是把name的内存地址复制给了a,也就是这两个玩意指向的是同一个对象
print("a内存地址%d"%(id(a)))
print("name内存地址%d"%(id(name)))
find()与index() #检测x是否在字符串中
data_name="linran"
print("r在%s中的下标%d"%(data_name,data_name.find('r')))
#可以查找目标对象在序列对象中的位置,如果不存在,则返回为-1
print("n在%s中的下标%d"%(data_name,data_name.index('n')))
#可以查找目标对象在序列对象中的位置,如果不存在,则报错
endswith/startswith() #是否x结束或开始
data_name="linran"
print("{}是否是以l开头:{}".format(data_name,data_name.startswith('l')))
print("{}是否是以n结尾:{}".format(data_name,data_name.endswith('n')))
lower/up() #大小写转换
data_name="linran"
print(data_name.upper())
data_name="AL"
print(data_name.lower())
四、列表
1.什么是列表
list:是python中非常重要的数据结构,是一种有序的数据集合,可以随时添加和删除其中元素
特点:
支持增删改查
列表中的数据是可以变化的【数据项可以变化,内存地址不会改变】
用[]来表示列表类型,数据项之间用逗号来分割,注意:数据项可以是任何类型的数据
支持索引和切片操作
2.列表常用方法
3.列表常用方法
len()函数
lin=[1,2,3,"林然"]
print(type(lin))#输出数据类型
print(len(lin))#len函数可以获取到列表对象中的数据个数
str="I Love LinRan"
print(len(str))#同样也适用于字符串
切片
list0=['linran',123,48,'lin',True]
print(list0)#输出所有元素
print(list0[1:3])#切片使用,输出第2个到第三个元素
print(list0[2:])#输出第三个到最后一个元素
print(list0[::-1])#倒序输出,从右往左输出
print(list0*2)#重复输出2次,相当于对列表中的元素进行输出
结果:
append()函数
list0=['linran',123,48,'lin',True]
print('追加之前的列表',list0)#输出所有元素
list0.append(['ll','12'])
print('追加之后的列表',list0)#输出所有元素
list0.append(8888)
print('追加之后的列表',list0)#输出所有元素
结果:
insert()函数
list0=['linran',123,48,'lin',True]
print('追加之前的列表',list0)#输出所有元素
list0.insert(1,"我在第2个数据之前插入了数字1")#插入操作需要指定位置插入
print(list0)
extend()函数:扩展函数
list0=['linran',123,48,'lin',True]
list2=list(range(10))#强制转换为list对象
list0.extend(list2)#扩展列表,将list2中的元素放入list0中,等于批量增加
print(list0)
结果:
修改操作
list0=['linran',123,48,'lin',True]
print('修改之前的列表',list0)#输出所有元素
list0[0]=1
print('修改之后的列表',list0)
结果:
删除操作-del
list1=list(range(1,20))
print(list1)
#del list1[0] 代表删除列表中的第1个元素
del list1[0]
print(list1)
#del list1[1:3] 通过切片批量删除
del list1[1:3] #删除第2个-第3个元素
print(list1)
remove 移除指定元素
list1=list(range(1,20))
list1.append(10)
print(list1)
list1.remove(10) #删除列表中第一个值为10的元素
print(list1)
结果
pop函数
list1=list(range(1,20))
print(list1)
list1.pop(0)#可以移除指定位置的元素
print(list1)
index(value,start,end)
list1=list(range(1,20))
print(list1.index(2,0,5))#代表查找从下标0到4中值为1的数据下标
五、元组
- 什么是元组
元组:是一种不可变的序列,在创建之后不能做任何修改
不可变
用()创建元组类型,数据项用逗号分隔
可以是任何类型
当元组中只有一个元素时,要加上逗号,不然解释器会当做整型来处理
同样可以支持切片操作
2.元组基本操作
元组的创建
tupleA=('linra',89,9.99,False,[1,2])
print(type(tupleA))
print(tupleA)
元组的查询:采用切片处理
tuple0=('linra',89,9.99,False,[1,2])
for item in tuple0:
print(item,end=" ")
print(tuple0[2])#通过下标来求取
print(tuple0[1:3])#通过切片来取
print(tuple0[::-1])#倒序取
print(tuple0[-3:-1:])#倒数第三个到倒数第二个
print(tuple0[::-2])#每间隔一个取一次
可以对元组中的列表里面的数据项修改
tuple0=('linra',89,9.99,False,[1,2])
print(tuple0)
print(type(tuple0[4]))
tuple0[4][0]=5
print(tuple0)
结果:
count函数
tuple1=(1,1,2,1,2,1,4)
print(type(tuple1))
print(tuple1.count(1))#统计1在元组中出现的次数
结果:
六、字典
- 什么是字典
字典:也是python中重要的数据类型,字典是有键值对组成的集合,通常使用健来访问数据,效率特别高,和List一样,支持对数据的添加、修改和删除操作
特点:
不是序列类型,没有下标的概念,是一个无序的键值集合,是内置的高级数据类型
用{}来表示字典对象,每个键值对用逗号分隔
键 必须是不可变的类型【元组、字符串】,值可以是任意类型
每个键必定是唯一的,如果存在重复的键,后者会覆盖前者
2.字典中常用的方法
创建
#创建时放入数据方式一
dict0={"school":'湖南工商大学','major':"计算机科学与技术"}
#添加字典数据方式二
dict0['linran']='林然'#增加方式,其中linran为键,林然为值,即key:value
dict0['age']=18
dict0['pos']='学生'
print(dict0)
print(len(dict0))#数据项长度
查找&修改&获取:通过键进行操作
#创建时放入数据方式一
dict0={"school":'湖南工商大学','major':"计算机科学与技术"}
#添加字典数据方式二
dict0['name']='林然'#增加方式,其中linran为键,林然为值,即key:value
dict0['age']=18
dict0['pos']='学生'
print(dict0['school'])#通过键获取对应的值,因为键是唯一的
修改
dict0['name']="焦迈奇"#通过键进行修改
print('过键进行修改',dict0['name'])
#update可以增加也可以修改
dict0.update({'name':'林然2号'})
获取
print("通过update进行修改",dict0['name'])
#获取所有的键
print('获取所有的键',dict0.keys())
#获取所有的值
print('获取所有的值',dict0.values())
#获取所有的数据项,包括键和值
print('获取所有的数据项,包括键和值',dict0.items())
for key,value in dict0.items():
print('%s==%s'%(key,value))
删除
dict0={"school":'湖南工商大学','major':"计算机科学与技术",'age':18,'name':'林然'}
print(dict0)
del dict0['school'] #仍然是通过键进行删除
print(dict0)
dict0.pop('age')
print(dict0)
结果:
排序:按照ASCII码进行排序
dict0={'name':'林然',"school":'湖南工商大学','major':"计算机科学与技术",'age':'18'}
print(dict0)
#如何排序,按照key进行排序
#d[0]代表以key进行排序
print(sorted(dict0.items(),key=lambda d:d[0]))
#按照value排序,类型要一致
print(sorted(dict0.items(),key=lambda d:d[1]))
结果:
七、共有方法
1.共有方法类型
2.共有方法操作
合并操作 +
strA='湖南工商大学'
strB='林然'
#字符串合并
print(strA+strB)
#列表合并
listA=list(range(10))
listB=list(range(11,20))
print(listA+listB)
#元组合并
tupleA=(1,2,5)
tupleB=(7,8,9)
print(tupleA+tupleB)
结果:
复制操作 *
strA='湖南工商大学'
#字符串复制
print(strA*3)
#列表复制
listA=list(range(10))
print(listA*3)
#元组复制
tupleA=(1,2,5)
print(tupleA*3)
in 对象是否存在
strA='湖南工商大学'
#字符串中是否存在
print('湖'in strA)
#列表是否存在
listA=list(range(10))
print(2 in listA)
#元组是否存在
tupleA=(1,2,5)
print(5 in tupleA)
结果: