Python的数据结构
数据结构
列表
定义一个列表
- 用中括号包起来的,为列表
a = []
:定义一个空列表a = list()
:通过函数定义一个空列表,也可以把其他可迭代对象转化为列表a = [1,2,'3]
列表的索引
- 列表的索引,也就是指列表中值的位置
- 从左往右,索引从0开始
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XWV50lo0-1599706338246)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200903101446572.png)]
-
从右往左,索引从-1开始
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0BtvYzZC-1599706338249)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200904092054268.png)]
-
可以通过索引取值
- 可以取单个值
- 可以取多个值
a = list('abcd') a[0] # 'a' a[4] # IndexError:index out of range # 用切片,返回的都是列表 a[:1] # ['a'] a[::-1] # ['d','c','b','a'] a[1:4:2] # ['b','d'] a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] a[-1:-4] # [] a[1:-4] # ['b', 'c']
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iCxKfOVk-1599706338251)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200903101933267.png)]
-
可以通过索引更改值
a = list('abcd') a[0] = 3 # 此时,列表a变成了[3,'b','c','d'] a[:2] = 3 # 此时会报错 a[:2] = '3' # 此时会用'3'替换a[:2],a会变成['3','c','d'] a[:2] = '333' # 此时会用'3','3','3'替换a[:2],a会变成['3','3','3','c','d']
-
索引的其他示例
list_aa[-1:-3:-1] list_aa[:4] list_aa[2:] list_aa[:] list_aa[::-1]
列表的方法
-
增
append(object)
:在列表末尾加,把整体作为一个元素,添加到列表extend(iterable)
:在列表末尾加,把整体中的每一个元素,添加到列表insert(index,value)
:在指定的index处插入value
-
查 :通过索引去查
-
改:通过索引去改
-
删
pop(index=-1)
:通过index去删,默认是最后一个remove(value)
:通过值去删,删除找到的第一个value
-
其他
copy()
:复制,也可以通过索引[:]
进行复制count(value)
:通过value在列表中的个数reverse()
:反转列表sort(key=None,reverse=False)
:排序列表,默认为正序,当reverse=True为倒序index(value[,start,stop])
:返回value在列表中的索引
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A6ORViKw-1599706338252)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200904102328669.png)]
-
示例
adict = {'a':1,'1':2,'c':3} alist = list(adict.items()) alist.sort()
补充
- 运算符
+
:列表可以通过+
拼接起来*
:列表可以通过*
进行复制
- 全局和局部,在函数里面,可以对全局的列表进行数据的操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U1vztBGg-1599706338253)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200903145346566.png)]
元组
元组的定义
1. 用小括号包起来的,称之为元组,元组不可更改
2. `atuple = tuple()` : 定义一个空元组
3. `atuple = ()` : 定义一个空元组
4. `atuple = (1,)` :定义只有一个元素的元组时,需要加上逗号
5. `atuple = 1,2,3` :通过这种方式也可以定义元组
元组的索引
- 同列表的索引
- 注意,元组生成后不可更改,因此无法通过索引改变值
- 通过切片取值,返回的是个元组对象
元组的方法
count(value)
:统计value在元组中的次数index(value[,start,stop])
:查找value在元组中的索引
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JljHQEvM-1599706338254)(C:\Users\Administrator.USER-20200604DR\AppData\Roaming\Typora\typora-user-images\image-20200903150617671.png)]
集合
集合的定义
1. 集合是用花括号包起来,且元素是单一的,注意跟字典的区分
2. 集合最主要的作用是去重
3. `aset = set()` :空集合只能用函数进行定义
4. `aset = {1}` : 有一个元素的集合
5. `aset = {1,2,2,3}` : 有三个元素的集合,重复的元素会被剔除掉
集合的索引
- 集合是无序的,因此没有索引
集合的方法
add(value)
:在集合里面添加一个元素pop()
:随机删除一个元素remove(value)
:删除指定的值- 集合的数学运算
字典
字典的定义
- 字典是用花括号包起来的,且元素是键值对的形式
adict = dict()
:定义一个空字典adict = {}
: 定义的是一个空字典,不是集合adict = {'username':'zhangsan'}
:定义包含一个元素的字典adict = {}.fromkeys('abc',20)
:定义一个包含三个元素的字典
字典的索引
- 字典没有索引的概念
字典的方法
- 增
aidct[key] = value
:直接通过这种方式,往字典adict
里面添加新元素adict.update(bdict)
:把bdict
的元素更新到adict
里面adict.setdefault(key,vaule)
:如果key不存在,添加到字典里面
- 查
adict[key]
:这种方式查值,如果键不存在,会报错adict.get(key,default=None)
:如果键不存在,会返回默认值adict.setdefault(key,defalut=None)
:如果键不存在,会返回默认值,且将该键和默认值插入字典
- 改,参见增
adict[key] = value
- 删
pop(key)
:根据指定的键,删除元素,会返回对应键的值popitem()
:采用后进先出的方式删除键值对
- 其他
keys()
: 查看所有的键values()
:查看所有的值items()
:将元素以(key,value)的形式进行输出
字典示例
name = ['zhangsan','lisi','wangwu']
salary = [10,8,12]
salary_dict ={}
for i in range(len(name)):
salary_dict[name[i]] = salary[i]
salary_dcit = dict(zip(name,salary))