线性结构特征:
- 可迭代 for … in
- 有长度,通过len(x)获取,容器
- 通过整数下标可以访问元素。正索引、负索引
- 可以切片
已经学习过的线性结构:list、tuple、str、bytes、bytearray
切片
sequence[start:stop]
sequence[start:stop:step]
通过给定的索引区间获得线性结构的一部分数据
start、stop、step为整数,可以是正整数、负整数、零
start为0时,可以省略
stop为末尾时,可以省略
step为1时,可以省略
切片时,索引超过上界(右边界),就取到末尾;超过下界(左边界),取到开头
在序列上使用切片[start:stop],子区间索引范围[start, stop),相当于从start开始指向stop的方向上获取数据
默认step为1,表示向右;步长为负数,表示向左
如果子区间方向和步长方向不一致,直接返回当前类型的”空对象”
如果子区间方向和步长方向一致,则从起点间隔步长取值
内建函数 函数签名 说明
id id(object) CPython中返回对象的内存地址可以用来判断是不是同一个对象
# 使用id看地址,要注意地址回收复用问题
print(id([1,2,3]))
print(id([4,5,6,7]))
# 上下两句可能内存地址一样,但是上面那个[1,2,3]没有意义,因为它用完之后,引用计数为0了,没人能再次访问到,释放了内存
# 如果2个存在在内存中的对象,地址一样一定是同一个对象
上例可知,实际上切片后得到一个全新的对象。 [:] 或 [::] 相当于copy方法。