学习笔记2
内建数据结构、函数及文件
文章目录
- 学习笔记2
- 一、数据结构与序列
- 1.元组
- 2.列表
- 3.字典
- 4.集合
# 前言
内建功能主要被设计为与python内建数据操作工具协同使用
python的常用数据结构:元组、列表、字典、集合
提示:以下是本篇文章正文内容,下面案例可供参考
一、数据结构与序列
1.元组
元组是一种长度固定、不可变的python序列。
创建元组:
元素是元组的元组:(可以看出该元组的元素是两个元组)
利用tuple函数将任意序列1或迭代器2转换为数组:
可以通过序列索引来取得里面指定的元素(这一点同很多其它语言类似)
元组是不可变的
但是如果元组里面包含一个可变的对象,那么这个对象内部就是可变的
元组之间可以通过+来实现连接
元组可以通过 * 来复制
对象自身并没有复制,只是指向他们的引用进行了复制.
元组也可以进行拆包(嵌套也是可以的)
(拆包常用场景就是遍历元组或列表组成的序列)
seq = [(1,2,3),(4,5,6),(7,8,9)]
for a,b,c in seq:
print('a={0},b={1},c={2}'.format(a,b,c))
*rest 可以用来替代任意长度的位置参数列表
2.列表
列表的长度是可以变化的,所包含的内容也是可以修改的,一般使用中括号[]或者list类型函数来定义列表。
列表常用函数
append:增加元素到列表尾部
insert: 插入到列表任何位置
pop:将知道哪个位置的元素移除
remove:将定位到第一个符合要求的值并且移除
in:关键字可以检查一个值是否在列表内
(in 检查是否存在效率是低下的,在列表中进行线性的扫描,而字典和集合是基于哈希表,同时检查所有元素)
连接和联合函数、排序
可以利用 + 将两个列表进行联合
extend 可以向该列表添加多个元素
切片
基本形式是将start:stop传入到索引符号[]中。
seq[::2]表示每隔多少个数取一个值
enumerate 可以追踪到当前元素的索引
zip 将列表、元组或其他序列的元素配对,新建一个元组构成的列表
3.字典
update 合并字典(键值相同时,会被覆盖)
del、pop 删除值
4.集合
集合是一个无序且元素唯一的容器
set :函数会去掉重复的数据,而保留一个
union | :两个集合的并集
& intersection :获得交集
- 序列
1、可迭代;
2、支持下标访问,即实现了 getitem() 方法,同时定义了 len() 方法,可通过 len() 方法获取长度;
3、内置的序列类型:list、str、tuple、bytes;
4、dict 同样支持 getitem() 和 len(),但它不归属于序列类型,它是映射类型,因为它不能根据下标查找,只能根据 key 来查找;
5、抽象类 collections.abc.Sequence 还提供了很多方法,比如 count()、index()、contains()、reversed()可用于扩展; - 迭代器
1、一个表示数据流的对象,可通过重复调用 next(或使用内置函数next())方法来获取元素。当没有元素存在时,抛出 StopIteration 异常;
2、iter(obj)接受一个迭代器作为参数时,返回的是它本身。在可迭代对象里我们说过,iter(obj)方法不报错,说明它一定是一个可迭代对象。因此迭代器一定是一个可迭代对象;
3、一个迭代器必须要实现 iter() 方法。但因为迭代器前提必须是一个可迭代对象,所以只实现 iter() 方法不一定是一个迭代器。