python高级数据类型(python可以处理类型有数字、字符串、列表、元组、字典等)
Contents
序列:在python中,序列是一组按照顺序排列的值【数据集合】
在python中存在三种内置的序列类型:(字典、集合不属于序列)
序列的优点:可以支持索引和切片的操作(切片是指截取字符串中的其中一段内容。切片使用语法:[起始下标:结束下标:步长] 切片截取的内容不包含结束下标对应的数据,步长指的是隔几个下标获取一个字符)
切片的高级特性:可以根据下标来获取序列对象的任意部分数据【支持字符串/列表】
切片语法结构:[start:end:step] step默认1 左闭右开)
print(strMsg[2:])#第二个不写,表示到最后 print(strMsg[:3])#0可以省略掉 print(strMsg[::-1])#倒叙输出,负号表示方向,从右往左遍历
*下标会越界,切片不会
序列的特征:第一个正索引为0,指向的是左端,第一个索引为负数的时候,指向的是右端
字符串及常用方法:
*index如果没有找到对象的数据,便会报异常,而find函数不会,找不到就返回
*字符串也是不可变的,如果重新赋值,会开辟新的存储空间
*单引号或双引号表示字符串都可以,但要注意,字符串中有单引号时,表示字符串的符号应该选择双引号,否则系统会判断不清楚
*a=b #将b的值赋值给a(赋值的是相同的内存地址) #是对一个内存地址的引用,他两是在一个内存地址
列表(list):python中非常重要的数据结构,是一种有序的数据集合
用for循环可以将列表中的元素一个一个取出,取完后退出循环
特点:
列表及常用方法:
* 可以对任何列表里的元素调用上述的字符串方法,例如使用title()让元素的格式更整洁
例如:print(bicycle[0].title())
*将索引指定为-1时,可让python返回最后一个列表元素,适用于列表长度不知,想输出最后一个元素,以此类推,-2输出倒数第二个元素,-3输出倒数第三个元素;仅当列表为空时,会报错
*修改列表的元素值,直接使用索引并赋新的值即可
*使用排序操作时,需要保证所有的值都是小写的
print(list*2)#连续输出两次数据 #删除操作 listB=list(range(10,50)) print(listB) del listB[1:3] #批量删除多项数据(del后边是空格) print(listB) #移除操作:pop&remove listB.remove(20)#移除指定的元素 print(listB) listB.pop(1)#移除指定的项,不同于remove,参数是索引值,而remove移除的是具体的值
数值列表
函数range()可用于生成一系列数字,是左闭右开,range(1,5)不会输出数字5
range(起始值,终止值,步长)
输出数字列表,需要list(range(1,5))
数值列表的常用方法:
min #数字列表的最小值
max #数字列表的最大值
sum #数字列表所有数值的总和
元组:是一组不可变的序列,在创建之后不能做任何修改
特点:
*对元组中的列表类型的数据可以进行修改 *重复对一个元组赋值,得到的内存空间也不同,因为其不可修改,所以新建了一个内存空间去保存元组
字典:可以存储任意对象,是以键值对的形式创建的{‘key’:'value'}利用大括号包裹着,通常使用键来访问数据,效率非常高,和list一样,支持对数据的添加删除修改,字典里的键(key)不能重复,值(value)可以重复,键(key)只能是不可变类型,如数字,字符串,元组,字典的值可以是任何对象,可以是数字,字符串,列表乃至字典
特点:
字典常用方法:
*字典不可以用索引,因此也不可使用切片操作
*键值对的存储顺序和添加顺序或遍历时的返回顺序不同,Python不关心键值对的添加顺序,而只关心键和值之间的关联
*可以存储多个对象关于同一信息的值
*多行字典,注意使用方式, 统一缩进4格,花括号对齐,每一行要加上逗号,同时最后一个键值对后面也要加上逗号,为以后在下一行添加键值对做好准备
favourite_languages = {
'jen': ''python,
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
#如何创建字典 dictA={"pro":'艺术','school':'北京电影学院'}#每一项就是一个键值对,通过:连接 print(type(dictA)) dictA['name']='李易峰'#[]里的是健,=后边的是值 dictA['age']=30 dictA['pos']='歌手' #添加字典的数据 print(dictA['name'])#通过键获取对应的值 #修改键对应的值 dictA['name']='谢亭丰' 或者dictA.update({'age':32}) dictA.update({'height':180})#update可以用来增加和修改 print(dictA) #获取所有的键 print(dictA.keys())/for key(变量名可变) in 字典名.keys():#这里变量名存储遍历结果#因为遍历字典会默认遍历所有的键,因此,入伏哦将keys()去掉,输出将不变 #使用keys做列表 if ‘erin’ not in dict.keys():##方法ksys()并非只能用于遍历,实际上,它返回一个列表,其中包含字典中所有的键,因此可用于核实信息 #获取所有的值 print(dictA.values())/for values(变量名可变) in 字典名.values():#这里变量名存储遍历结果 #获取所有的数据项,包括键和值 print(dictA.items())/for key,value(变量名可变) in 字典名.items():#这里变量名存储遍历结果 #删除操作 del dictA['name']#删除指定的键,也可以通过pop来操作 dictA.pop['age'] #字典实现排序,按照key排序,字母通过asc码比较排序,d[0]代表key print(sorted(dictA.items(),key=lambda d:d[0]))/for key in sorted(dict.keys())#因为keys相当于返回一个列表,加了一个sorted直接对其排序 #根据key或者value,谁有意义根据谁排序 #字典实现排序,按照value排序 print(sorted(dictA.items(),key=lambda d:d[1])) #对字典的值去重 for name in set(dict.values()):#set也是一种数据类型 #要注意比较的值类型是否相同,不相同需要改为一致的
公用方法:
#共有方法的操作+,*,in strA='人生苦短' strB='我用python' print(strA+strB) print(strA*3) print('生' in strA)#对象是否存在