目录
组合数据类型可以分为三类:序列类型、映射类型、集合类型。序列类型包括列表、元组、字符串三种;映射类型中包含键值,典型的也就是字典;集合类型中元素无序,并且不允许有相同元素出现。
序列总体概况
序列类型(列表、元组、字符串)就是单纯的数据组合。元素之间存在先后关系,因此可以使用索引进行访问([i])。
当然,序列元素中也可以出现序列类型。
Python中典型的序列类型包括:字符串(str)、列表(list)、元组(tuple)。字符串是单一字符的有序集合,所以可以视作基本数据类型。无论哪种序列类型,都可以使用相同的索引体系,从左到右序列号递增(下标,第一个为0),从右到左序列号递减(下标,第一个为-1)。
序列类型常用的操作符和方法如下表所示,这些均是学习序列类型中具体类型的基础:
(x为序列中的某一元素,s和t为序列,ijk为序列的索引)
操作符和方法 功能
x in s x是s的元素就返回True
x not in s x不是s的元素就返回True
s + t 将s和t序列连接起来(s和t必须是相同的数据类型)
s * n 将s复制n次
s[i] 返回s序列第i下标的元素
s[i:j] 返回s中[i,j)的子序列
s[i:j:k] 返回s中[i,j)以k为步长的子序列
len(s) 返回s序列的元素总数
max(s) 返回s序列中最大元素
min(s) 返回s序列中最小元素
s.index(x[,i[,j]]) 返回序列s在区域[i, j)第一次出现x的位置
s.count(x) 返回序列s中出现x的总数
数据类型
列表
列表对象及其创建与删除
1)变量只可以存储一个元素,而列表可以存储N个元素,程序可以方便地对这些数据进行整体操作(相当于其他语言中的数组) 可以存储不同类型的元素
(列表对象的讲解这里不是很明白)
2)列表的创建:列表对象是一个连续的空间
#列表的第一种创建方式:直接用中括号
lst =['hello','world',98]
#列表的第二种创建方式:使用内置函数list()
lst2 =list('hello','world',98)
3)列表的特点:
列表元素按顺序有序排列
索引映射唯一数据
可以存储任意类型数据且可存储重复数据
根据需要动态分配回收内存
列表的操作
1)查询操作:
获取列表中指定元素的索引
lt = ['hello', 'world',' 'id' 98 'hello']
print( lt.index('hello')) #如果列表中有相同元素只返回相同元素的第一个元素的指引
#若查询元素不存在,则会抛出ValueError
print(lt.index('hello'),1,4) #可以在指定start和stop之间内查找
获取列表中的单个元素
正向索引:从0到N-1,例list[0]
负向索引:从-1到-N,例list[-3]
若索引不存在,则出现IndexError
获取多个元素(切片操作)
列表的判断及遍历:
2)增、删、改操作:
增加操作
append()函数,在原列表的末尾添加一个元素,没有新列表生成,使用方法list.append( ),可以添加任何类型元素
extend()函数,向列表的末尾一次性添加多个元素
删除操作
remove()函数:一次只删除一个元素,重复元素只删除一个,元素不存在则抛出ValueError
pop()函数:删除一个指定索引位置上的元素,索引不存在则抛出IndexError,若未指定索引则删除最后一个元素
切片:删除至少一个元素,将会产生一个新的列表对象
clear()函数:清空列表中所有元素
del语句将列表对象删除
lt = [7,8,9,02,67,78]
new=lt[1:3] #产生一个新列表
lt[1:3]=[] #不产生新的列表
修改操作
lt=[10,20,30,40,50,60]
lt[2]=100 #一次修改一个值
lt[1:3]=[300,400,500,500] #切片修改多个值
3)列表元素的排序:
(判断是否产生新的对象可以用打印id来判断)
lt=[8,3,4,6,7,9]
lt.sort() #对列表进行一个升序排序
lt.sort(reverse=True) #对列表进行一个降序排序
#使用内置函数sorted(),将产生一个新的列表
4)列表生成式:
字典
字典的概念和实现原理及创建
1)字典概念:python内置数据结构之一,以键值对的方式存储数据,是无序序列,但与列表一样是可变序列(可以进行增删改操作)。因为字典的值是通过hash(key)函数存入的,所以字典的key必须是不可变序列(不能直接进行增删改操作的序列)
不可变序列:无法在原来的序列上直接进行增删改操作,要进行下列操作,只能重新声明空间 (整数序列、字符串序列,元组)。可变序列:可以进行增删改操作,操作完之后对象地址不发生改变(列表、字典,集合)
2)字典的实现原理:根据key查value
3)字典的创建:1.常用花括号{ }创建:scores={'张山':165,'里斯':175}
2.用内置函数dict()创建:dict(name='jack',age=20)
3.创建空字典:d={ }
字典元素的获取
1)get方法默认值设置:scores.get('里斯',99) #99就是不存在指定key时的默认值
字典的操作
1)key的判断:in指定的key在字典中存在则返回True,not in指定的key在字典中不存在则返回True
2)字典的删除:
scores={'张山':165,'里斯':175}
del scores['张山'] #删除指定的key-value对
print(scores)
scores.clear() #清空字典中所有内容
print(scores)
3)字典元素的新增:
scores={'张山':165,'里斯':175}
scores['张山']=195 #修改字典中的键值对所对应的值
print(scores)
scores['陈留']=195 #新增元素
print(scores)
4)获取字典视图:keys获取字典当中所有键,values获取字典当中所有值,items获取字典当中所有键值对。
scores={'张山':165,'里斯':175}
keys=scores.keys() #获取所有的keys
print(keys)
print(type(keys)) #元素类型为<class 'dict_keys'>
print(list(keys)) #将所有keys元素组成的视图转换成列表
values=scores.values() #获取所有的values
print(values)
print(type(values)) #元素类型为<class 'dict_values'>
print(list(values)) #将所有values元素组成的视图转换成列表
items=scores.items() #获取所有的items
print(items)
print(type(items)) #元素类型为 <class 'dict_items'>
print(list(items)) #将所有items元素组成的视图转换成列表,列表元素均为元组
5)字典元素的遍历:for i in range(字典) 遍历的到的是字典中的key
6)字典的特点: 键不能重复,值可以重复
字典当中的元素是无序的
键必须是不可变对象
字典可以根据需要动态伸缩
字典会浪费较多的内存,是一种空间换时间的数据结构(查询速度快)
7)字典生成式:
元组
元组的概念和创建方式
1)python内置的数据结构之一,是不可变序列,用( )表示
2)元组的创建方式:1.使用( )创建元组,有多个元素时也可以省略小括号,只有一个数据内容的时候要加上逗号,不然会默认为其他类型的数据 2.使用内置函数tuple()函数创建元组
元组的操作:
1)元组是不可变序列,其优点:在多任务环境中,同时操作不需要加锁。元组存储的是对象的引用,如果元素本身是不可变对象,则不能再引用其他对象,但如果元素本身是可变对象,则可变对象的引用不可以改变,但是数据内容可以改变
2)元组的遍历:元组是可迭代对象,所以可以用for in 循环。第一种获取元组元素的方法:使用索引t[0]、t[1] 第二种获取元组元素的方法:使用for in循环。
集合
集合的概述与创建
1)概念:python语言中的内置数据结构之一,是没有值的字典,与列表、字典一样都属于可变序列类型
2)集合的创建方式:1.直接使用{ }创建 2.使用内置函数set( )创建:set( )函数也可以将其他类型的元素转换成集合类型的元素 3.若要定义空集合,则不能直接用{ },直接用会产生新字典,而不是空集合,所以要定义空集合只能用set( )函数。
3)集合的特点:元素不能重复,若有重复元素,则只存储一个,且元素是无序的
集合的常规操作
1)集合元素的判断操作:in或not in,判断结果为True或False
2)集合元素的新增操作:1.使用add()函数,一次添加一个元素
2.update()函数,一次至少添加一个元素(可以添加多个元素)
3)集合元素的删除操作:
1.remove( )函数,一次删除一个指定元素,若指定元素不存在则抛出KeyError,使用t.remmove() ,t为集合名称
2.discard()函数,一次删除一个指定元素,若指定元素不存在不报异常,使用t.discard() ,t为集合名称
3.调用pop方法,一次删除一个任意元素
4.clear()函数,清空集合中所有元素
集合之间的关系和数据操作
1)集合之间的关系
判断集合是否相等:用==或者!=判断,只要元素都相等,则集合相等,与位置无关,因为集合是无序的。
判断子集(issubset):s2.issubset(s1),返回结果为True或者False
判断超集(issuperset):s2.issuperset(s1),判断s2是否是s1的超集
判断两个集合没有交集(isdisjiont):s2.isdisjiont(s4),判断s2和s4是否有交集,没有交集为True,有交集为False
2)集合的数据操作:
1.交集操作:s1.intersection(s2)与s1&s2等价
2.并集操作:s1.union(s2)与s1|s2等价 #交并集操作之后原集合都没有发生变化
3.差集操作:s1.difference(s2)与s1-s2等价,用s1集合减去s2集合,原集合也没有发生改变
集合生成式
1)列表生成式:lst=[i*i,for i in range(6)],集合生成式:t={i*i,for i in range(6)}
字符串
创建与驻留机制
1)字符串再python中是基本数据类型,是不可变字符序列
2)字符串的驻留机制:仅保存一份相同且不可变的字符串的方法,创建相同字符串时,不会开辟新空间,而是把该字符串地址赋值给新的变量
字符串的常用操作
1)字符串查询操作:
2)字符串大小转换操作方法:
upper( )和lower( )函数转换后会生成一个新的字符串对象
3)字符串内容对齐操作的方法:
4)字符串分割操作
5)判断字符串的方法:
6)字符串的替换与合并:
字符串的比较操作
1)
字符串的切片操作
1)字符串是不可变对象,不具备增删改操作,切片后将产生新的对象。
格式化字符串
1)
字符串的编码和解码
1)