Python3 数据结构

Python3 数据结构

列表

Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能。

列表的基本特点:

  • 列表可以包含任意类型的对象:数字、字符串、列表、元组或者其他对象。
  • 列表是一个有序序列。与字符串类似,列表中的每一项按照从左到右的顺序,可以通过位置偏移量进行索引和分片。
  • 列表是可变的。首先列表的长度可变,即可以添加或删除列表成员。其次列表中的对象可以直接修改。
  • 列表存储的是对象的引用,类似于C/C++的指针数组。每个列表成员存储的是对象的引用。而不是对象的本身。
    python中列表操作如下表所示:
操作描述
list.append(x)把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。
list.extend(L)在列表末尾添加多个对象,参数可谓迭代对象相当于 a[len(a):] = L
list.insert(i, x)在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。
list.remove(x)删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.pop(i)从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被删除。
list.clear()移除列表中的所有项,等于del a[:]。
list.index(x)返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
list.count(x)返回 x 在列表中出现的次数
list.sort()对列表中的元素进行排序。若列表对象全部是数字,则按数字从小到大排序;若列表对象全部为字符串,则按字典顺序排序;若包含多种类型,则会出错。
list.reverse()倒排列表中的元素,即将列表中对象的位置反转
list.copy()复制列表对象

注意:
列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。也可以把列表当做队列用,只是在队列里第一加入的元素,第一个取出来;但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)。

del 语句

使用 del 语句可以从一个列表中依索引而不是值来删除一个元素。这与使用 pop() 返回一个值不同。可以用 del 语句从列表中删除一个切割,或清空整个列表。例如:

>>> a = [-1, 1, 2, 3,4, 5]
>>> del a[0]
>>> a
[1, 2, 3, 4, 5]
>>> del a[2:4]
>>> a
[1, 2, 5]
>>> del a[:]
>>> a
[]

元组和序列

元组由若干逗号分隔的值组成,元组在输出时总是有括号的,以便于正确表达嵌套结构。在输入时可能有或没有括号, 不过括号通常是必须的。

元组的特点如下:

  • 元组可以包含任意类型的对象。
  • 元组是有序的。元组中的对象可以通过位置进行索引的分片。
  • 元组的大小不能改变,既不能为元组添加对象,也不能删除元组中的对象。
  • 元组中的对象也不能改变。
  • 与列表类似,元组中存储的是对象的引用,而不是对象本身。

元组的基本操作如下:

操作描述
(),tuple()创建元组
len()获得元组长度
+加法运算可用于合并多个元组。例如(1,2)+(‘ab’) 输出为: (1,2,‘ab’)
*乘法运算可用于合并多个重复的元组,例如:(1,2)*3 输出为:(1,2,1,2,1,2)
inin操作符用于判断对象是否属于元组
count()用于返回指定值在元组中出现的次数
index()用于在元组中查找指定值
>>> t = 1, 5, 'hello!'
>>> t[0]
1
>>> t
(1, 5, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((1, 5, 'hello!'), (1, 2, 3, 4, 5))

集合

集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。可以用大括号({})创建集合。注意:如果要创建一个空集合,你必须用 set() 而不是 {} ;后者创建一个空的字典。

字典

字典是一种无序的映射的集合,包含一系列的“键:值”对。字典常量用花括号表示。

字典具有以下特点:

  • 字典的键通常采用字符串,但也可以用数字、元组等不可变的类型。
  • 字典的值可以是任意类型
  • 字典也可以称为关联数组或散列表,它通过键映射到值。字典是无序的,它通过键来索引映射的值,而不是通过位置来索引。
  • 字典属于可变映射,通过索引来修海键映射的值。
  • 字典长度可变,可为字典添加或删除“键:值”对。
  • 字典可以任意嵌套,即键映射的值可以是一个字典。
  • 字典存储的是对象的引用,而不是对象本身。

理解字典的最佳方式是把它看做无序的键=>值对集合。在同一个字典之内,关键字必须是互不相同。一对大括号创建一个空的字典:{}。或者用dict()创建字典。

字典的基本操作如下:

操作描述
(),dict()创建字典
len()获得字典长度,即“键:值”对的个数
inin操作符用于判断字典是否包含某个键
clear()删除全部字典对象
copy()复制字典对象
get(key,[,defauli])返回键key映射的值。如果键key不存在,返回空值。可以用default参数指定不存在的键的返回值
pop(key,[,default])从字典中删除键key,并返回映射值,若键不存在,则返回default,未指定default时则会出错
popitem()从字典删除并返回键值对元组。空字典调用时会产生KeyError错误
setdefault(key,[,default])返回映射值或者为字典添加键值对。指定键key在字典中存在时,返回映射值。若键key不存在,则添加“key:default”键值对,省略default时,映射值默认为None。
update(other)用于为字典添加键值对。参数other可以是另一个字典或者赋值格式表示的元组。若字典已经存在同名的键,则映射值被覆盖。
items()返回键值对视图
keys()返回字典中所有键的视图
values()返回字典中所有值的视图
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值