目录
基本数据类型
----------------------------------------------分割线-------------------------------------------------
基本数据类型
整型
:占28个字节
(1)二进制: 0b/0B引导, 0b101, 0B111011
(2)八进制: 0o/0O引导, 0o721, 0O332
(3)十进制: 无引导, 132, 999
(4)十六进制: 0x/0X引导, 0xff13, 0x32a3
实型
:占24个字节
<a>e<b> = a * 10 ^ b
布尔型
:True占28个字节,False占24个字节
True False
字符串型
:占49+len(字符串)个字节
不可变, 由''或""包含
----------------------------------------------分割线-------------------------------------------------
序列类型
该类型是一个元素向量,元素之间存在先后关系
,可以通过下标访问,常用的有str,list,tuple,deque
所有序列类型都支持下列操作
x in s
或 x not in s
-> bool, O(n)
: 判断元素是否在存在
a + b, O(n)
:将a,b连接为1个新序列并返回
s[i], O(1)
:返回下标为i的元素
s[l : r + 1 : step], O(k)
:返回s[l:r]中s[l], s[l+k], s[l+2k]....的子序列,
s[r : l - 1 : -step], O(k)
:返回s[l, r]中s[r], s[r-step], s[r-2*step]…
len(s), O(1)
:返回序列中元素个数
max(s), min(s), O(n)
:返回最大、小值
s.count(x) O(n)
: 返回元素x在序列s中出现的次数,当n太大,可以用dict来记录
s.index(x, l, r + 1),O(n)
: 返回[l, r]中x元素第一次出现的下标,不存在抛出异常(l, r 可选)
两套下标[0, ..., n - 1]
和 [-n, ... -1]
列表
底层为动态数组,每个元素是一个引用,一个引用占8个字节,占字节数:56 + 8 * 元素个数
定义
空列表:[] 或 list()
非空:[元素1, 元素2, ..., 元素n] 或 list(可迭代对象)
生成式:[表达式 for i in 可迭代对象 条件]
增
在最后添加元素: .append(元素) O(1)
在指定下标插入元素: .insert(pos, value) O(n)
扩展别的列表: .extend(列表) (等价于'+'') O(k)
删
删最后一个元素: .pop() -> value, O(1)
删下标为pos的元: .pop(pos) -> value, O(n)
s[l : r + 1] = []: 把[l, r]全删除, O(n)
改
修改某个值: s[i] = 新值 O(1)
修改连续多个值: s[l:r+1] = [值1,值2,...,值n] #多增少删
查
某个元素值: s[i] O(1)
多个连续值: s[l:r+1] O(r - l + 1)
排序
默认升序
.sort(key = 排序规则) -> void:O(nlogn)
sorted(源列表,排序方法):将产生一个新的列表对象。
翻转
.reverse() -> void:O(n)
清空
.clear() -> void:O(n)
双端队列/deque
from collections import deque,底层为双向链表
定义
空:dq = deque()
非空:dq = deque(可迭代对象)
指定maxlen:dq=deque(maxlen=MAXLEN);
增
.append(value) -> void:O(1),超出maxlen自动popleft()
.appendleft(value) -> void:O(1),超出maxlen自动pop()
.extend(可迭代对象) -> void: O(n),超出maxlen自动popleft()
.extendleft(可迭代对象) -> void:O(n),超出maxlen自动pop()
删
.pop() -> value:O(1),弹出最后值
.popleft() -> void:O(1),弹出头值
改
头尾: O(1)
随机: [i], O(n)
查
头值: [0], O(1)
尾值: [-1], O(1)
随机: [i], O(n)