【python】 列表、元组、数组、双向队列 方法对比 数组

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

数组 array

如果需要一个只包含数字的列表, array.arraylist 更高效,因为数组在背后存的并不是数字对象(如 float ),而是数字的机器翻译,也就是字节表述。这一点就跟 C 语言中的数组一样。

数组支持所有跟可变序列有关的操作,包括 .pop.insert.extend 。另外,数组还提供从文件读取和存入文件的更快的方法,如 .frombytes.tofile

array.array 第一个参数指明数组元素的数据类型。Python 不会允许你在数组里存放除指定类型之外的数据。

队列 deque

collections.deque 类(双向队列)是一个线程安全、可以快速从两端添加或者删除元素的数据类型( appendpopleft 都是原子操作)。

如果想要有一种数据类型来存放“最近用到的几个元素”,deque 也是一个很好的选择。这是因为在新建一个双向队列的时候,你可以指定这个队列的大小,如果这个队列满员了,还可以从反向端删除过期的元素,然后在尾端添加新的元素。

方法比较

方法 列表 元组 数组 双向队列 说明
s__add__(s2) s + s2 ,拼接
s__iadd__(s2) s += s2 ,就地拼接
s.append(e) 尾部添加一个新元素
s.appendleft(e) 尾部添加一个新元素
s.clear() 删除所有元素
s.__contains__(e) s 是否包含 e
s.copy() 浅复制
s.__copy__() copy.copy 的支持
s.__deepcopy__() copy.deepcopy 的支持
s.count(e) es 中出现次数
s.__delitem__(p) 删除位于 p 的元素
s.extend(it) 把可迭代对象 it 追加到 s 尾部
s.extendleft(it) 把可迭代对象 it 追加到 s 头部
s.__getitem__(p) 获取位于 p 的元素
s.__getnewargs__() pickle 中支持更加优化的序列化
s.index(e) 找到 se 第一次出现的位置
s.insert(p, e) 在位置 p 之前插入元素 e
s.__iter__() 获取 s 的迭代器
s.__len__() len(s) 元素个数
s.__mul__(n) s * n , 重复拼接
s.__imul__(n) s *= n , 就地重复拼接
s.__rmul__(n) n * s , 反向拼接
s.pop([p]) 有(无参) 删除最后/位于 p 的元素并返回其值
s.popleft() 删除最前元素并返回其值
s.remove(e) 删除 s 中第一次出现的 e
s.reverse() 就地倒序
s.__reversed__() 返回倒序迭代器
s.rotate(n) n 个元素从队列的一端移到另一端
s.__setitem__(p, e) 将位置 p 替换为元素 e
s.sort([key], [reverse]) 排序
s.byteswap 翻转数组内每个元素的字节序列
s.frombytes(b) 将压缩成机器值的字节序列读出来添加到尾部
s.fromfile(f,n) 将二进制文件 f 内含有机器值读出来添加到尾部,最多添加 n
s.fromlist(l) 将列表里的元素添加到尾部,如果其中任何一个元素导致了 TypeError 异常,那么所有的添加都会取消
s.tobytes() 把所有元素的机器值用 bytes 对象的形式返回
s.tofile(f) 把所有元素以机器值的形式写入一个文件
s.tolist() 把数组转换成列表,列表里的元素类型是数字对象
s.typecode 返回只有一个字符的字符串,代表数组元素在 C 语言中的类型

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%