Python -- 容器解析“ 列表(list)、元组(tuple)、集合(set)、字典(dict)”

Python – 容器解析“ 列表(list)、元组(tuple)、集合(set)、字典(dict)”

Python 支持一种数据结构的基本概念,名为容器(container)。容器基本上就是可包含其他对象的对象。两种主要的容器是序列(如列表和元组)和映射(如字典)。在序列中,每一个元素都有编号,而在映射中,每个元素都有名称(也叫键)。有一种既不是序列也不是映射的容器,它就是集合(set)。

1.列表(list)

列表是可变的,即可修改其内容。

1.1 列表的含义

列表是一种线性表,由大量的节点组成,每一个节点都可以存储数据,列表可以存储大量的数据的容器。

1.2 基本的列表操作

可对列表执行所有的标准序列操作,如索引、切片、拼接和相乘,但列表的有趣之处就是可以修改。下面是修改列表的几种方式:给元素赋值、删除元素、给切片赋值以及使用列表的方法(注:并非所有的列表方法都会修改列表。)

1.2.1 修改列表:给元素赋值

使用索引表示法给特定位置的元素赋值
eg:
在这里插入图片描述
注:不能给不存在的元素赋值

1.2.2 删除元素

从列表中删除元素使用 del 语句即可
eg:
在这里插入图片描述
列表 success 中 57 彻底消失了,列表的长度也从 5 变成了 4 。

1.2.3 给切片赋值

切片的功能很强大,给切片赋值让这项功能更强大
eg:
在这里插入图片描述
从上述代码可知,可以同时给多个元素赋值,通过使用切片赋值,可将切片替换为长度与其不同的序列。
eg:
在这里插入图片描述
使用切片赋值还可以在不替换原有元素的情况下插入新的元素
eg:
在这里插入图片描述
上面相当于插入了一个序列,也可以采取相反的措施来删除切片
eg:
在这里插入图片描述
上述代码和 del sum[1:3] 等效。

1.3 列表的常用方法
1.3.1 append 将一个对象附加到列表末尾

eg:
在这里插入图片描述

1.3.2 clear 清空列表的内容

eg:
在这里插入图片描述

1.3.3 copy 复制列表

eg:
在这里插入图片描述

1.3.4 count 计算指定的元素在列表中出现的次数

eg:
在这里插入图片描述

1.3.5 extend 同时将多个值附加到列表末尾,可将这些值组成的序列作为参数提供给 extend。换言而之,可使用一个列表来扩展另一个列表。

eg:
在这里插入图片描述

1.3.6 index 在列表中查找指定值第一次出现的索引

eg:
在这里插入图片描述
可以索引到出现的 name 的位置,没有的 name 索引不到。

1.3.7 insert 将一个对象插入列表

eg:
在这里插入图片描述

1.3.8 pop 从列表中删除一个元素(末尾最后一个元素),并返回这一元素

eg:
在这里插入图片描述
pop 是唯一既修改列表又返回一个非 None 值得列表方法。

使用pop可以实现一种常见的数据结构——栈( stack )。栈就像一叠盘子,你可以在上面添加盘子,还可以从上面取走盘子。最后加入的盘子最先取走,叫做后进先出( LIFO )

1.3.9 remove 用于删除第一个指定值得元素

eg:
在这里插入图片描述
只删除了为指定值的第一个元素,无法删除列表中其他为指定值的元素。
remove 是就地修改且不返回值的方法之一。不同于 pop 的是,它修改列表,但不返
回任何值。

1.3.10 reverse 按相反的顺序排列列表中的元素

eg:
在这里插入图片描述
注: reverse 修改列表,但不返回任何值(与 remove 和 sort 等方法一样)。

1.3.11 sort 对列表就地排序

eg:
在这里插入图片描述
元素按顺序排列,而不是返回排序后的列表的副本。

2.元组(tuple)

不可修改的序列
与列表一样,元组也是序列,唯一的差别在于元组是不能修改的(字符串也不能修改)。元组语法很简单,只要将一些值用逗号分隔,就能自动创建一个元组
eg:
在这里插入图片描述

2.1 元组的常用方法
2.1.1 count 统计元素的个数
2.1.1 index 查找索引位置

注: 元组是不可变类型,意味着当元组中的值定义好之后,再无法修改,但是,如果元组的元素是可变类型,那么该元组是可变的!!!
在定义元组时,如果只有一个元素,那么一定要在该元素后面加个逗号,否则Python解释器会将该元组当成一个数字对待(圆括号就数学上的含义)

eg:
在这里插入图片描述在这里插入图片描述

3.集合(set)

使用全局函数 set()
eg:
在这里插入图片描述
注: 可使用序列(或其他可迭代对象)来创建集合,也可使用花括号显式地指定。注意,不能仅使用花括号来创建空集合,因为这将创建一个空字典。
eg:
在这里插入图片描述
必须在不提供任何参数的情况下调用 set 。集合主要用于成员资格检查,因此将忽略重复的元素
eg:
在这里插入图片描述
与字典一样,集合中元素的排列顺序是不确定的,因此不能依赖于这一点
eg:
在这里插入图片描述
集合是可变的,因此不能用作字典中的键。另一个问题是,集合只能包含不可变(可散列)的值,因此不能包含其他集合。由于在现实世界中经常会遇到集合的集合,因此这可能是个问题。所幸还有frozenset 类型,它表示不可变(可散列)的集合。

eg:和列表类似
在这里插入图片描述在这里插入图片描述
注: 在 Python 中,{}不一定是 set ,也有可能是字典
如果没有初始化的值,不能直接用 {} 反向定义,默认为字典类型
在这里插入图片描述
集合的特点: 元素唯一,不允许重复,无序

3.1 集合的常用方法
3.1.1 add 添加元素(值)

eg:
在这里插入图片描述

3.1.2 clear 清除元素(值)
3.1.3 copy 复制
3.1.4 difference 差集

eg:
在这里插入图片描述
反着写:
在这里插入图片描述

3.1.5 discard 移除元素,如果存在,不存在也不报错
3.1.6 intersection 交集

eg:
在这里插入图片描述

3.1.7 pop 随机移除(一般不用)

无序移除
eg:
在这里插入图片描述

3.1.8 remove 移除

指定移除
eg:
在这里插入图片描述

3.1.9 union 并集

eg:
在这里插入图片描述

4.字典(dict)

可通过名称来访问其各个值的数据结构。这种数据结构称为映射(mapping)。字典是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。键可能是数、字符串或元组。

4.1 字典的用途
  1. 表示棋盘的状态,其中每个键都是由坐标组成的元组;
  2. 存储文件修改时间,其中的键为文件名;
  3. 标签/地址。
4.2 字典的创建和使用

字典由键及其相应的值组成,这种键–值对称为项(item)。每个键与其值之间都用冒号( : )分隔,项之间用逗号分隔,而整个字典放在花括号内。空字典(没有任何项)用两个花括号表示,类似于下面这样: {} 。

注: 在字典(以及其他映射类型)中,键必须是独一无二的,而字典中的值无需如此。

4.2.1 函数 dict

使用函数 dict 从其他映射(如其他字典)或键–值对序列创建字典。
eg:
在这里插入图片描述

4.3 字典的常用方法
4.3.1 clear 删除所有的字典项,且什么都不返回(或者说返回 None )。

eg:
在这里插入图片描述

4.3.2 copy 返回一个新字典

eg:
在这里插入图片描述

4.3.3 fromkeys 创建一个新字典

eg:
在这里插入图片描述

4.3.4 get 访问字典

eg:
在这里插入图片描述
如果访问字典中没有的项,将引发错误。而使用 get 不会这样。

如果字典包含指定的键, get 的作用将与普通字典查找相同。
eg:

在这里插入图片描述

4.3.5 items 返回一个包含所有字典项的列表

eg:
在这里插入图片描述

4.3.6 keys 返回一个字典视图,其中包含指定字典中的键
4.3.7 pop 获取与指定键相关联的值,并将该键–值对从字典中删除

eg:
在这里插入图片描述

4.3.8 popitem 类似于 list.pop ,但 list.pop 弹出列表中的最后一个元素,而 popitem 随机地弹出一个字典项,因为字典项的顺序是不确定的,没有“最后一个元素”的概念。如果你要以高效地方式逐个删除并处理所有字典项,这可能很有用,因为这样无需先获取键列表

eg:
在这里插入图片描述

4.3.9 values 返回一个由字典中的值组成的字典视图

注: 同于方法 keys ,方法 values 返回的视图可能包含重复的值。
eg:
在这里插入图片描述

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值