Python学习Day3-高级数据类型

一、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中非常重要的数据结构,是一种有序的数据集合,可以随时添加和删除其中元素

  • 特点:

  1. 支持增删改查

  1. 列表中的数据是可以变化的【数据项可以变化,内存地址不会改变】

  1. 用[]来表示列表类型,数据项之间用逗号来分割,注意:数据项可以是任何类型的数据

  1. 支持索引和切片操作

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的数据下标

五、元组

    • 什么是元组

元组:是一种不可变的序列,在创建之后不能做任何修改

  1. 不可变

  1. 用()创建元组类型,数据项用逗号分隔

  1. 可以是任何类型

  1. 当元组中只有一个元素时,要加上逗号,不然解释器会当做整型来处理

  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一样,支持对数据的添加、修改和删除操作

特点:

  1. 不是序列类型,没有下标的概念,是一个无序的键值集合,是内置的高级数据类型

  1. 用{}来表示字典对象,每个键值对用逗号分隔

  1. 键 必须是不可变的类型【元组、字符串】,值可以是任意类型

  1. 每个键必定是唯一的,如果存在重复的键,后者会覆盖前者

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)

结果:

八、小结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜小林然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值