序列
存储一系列对象的数据类型,统称为序列
可变序列
列表list:
- 可包含任意对象的有序集合,可包含异质对象
- 可以通过下标访问对应元素,下标从0开始,允许负数
- 列表长度可变,可以任意嵌套
- 列表变量指向引用对象,引用对象指向各个元素对象
- 列表元素修改实质是修改引用对象对元素对象的指向
不可变序列
元组tuple:
- 可包含任意对象的有序集合,可包含异质对象
- 可以通过下标访问对应元素
- 元组长度不可变,可以任意嵌套
- 元组变量指向引用对象,引用对象指向各个元素对象
范围range:
- 一般用于生成数值序列,方便执行特定次数的循环
- 可以通过下标访问对应元素
序列通用操作
- in操作符判断元素是否在序列内
- not in 判断元素是否不在序列内
- +操作符链接两个序列
- *操作符复制序列元素
- len(arr)获取指定序列长度(元素个数)
- min(arr)/max(arr)获取序列元素最小值最大值
- sum(arr)获取序列元素之和
- arr.index(a)检索某个元素在序列中第一次出现的索引位置
- arr.count(a)统计某个元素在序列中出现的次数
- arr[a:b:c]表示以步长c选取位于索引a和b间的元素,a为空会从头取,b为空会取到尾,c默认值为1,arr[::]==arr
- 索引可看做元素间的位置,如arr[3:6],则索引3和6中间只有arr[3-5]三个元素
- 除-0外,同一个索引位置有正负两个值,二者等价可混用,arr[-0]==arr[0]
可变序列通用操作
- arr[a] = x 改变序列某一个元素
- arr[a:b] = t 改变指定区域的元素,t必须是一个可迭代对象,长度无需一致,但如果使用步长值c,必须保证长度一致
- arr.insert(i,x) 插入元素
- arr.append(x) 追加尾部元素
- arr.extend(t) 扩展序列
- del arr[a:b:c] 操作符删除指定元素
- arr.pop()/arr.pop(i) 删除尾部/指定索引元素,可接收删除值
- arr.remove(x) 删除序列中第一个匹配值
- arr.clear() 清空序列
- arr.reverse() 反转序列
- arr.copy() 深层复制序列,等价于 s = arr[:]
列表list操作
- list(‘abc’)初始化数组[‘a’,’b’,’c’]
- list(range(5,8))初始化数组[5,6,7]
- arr.sort() 升序排序列表
- arr.sort(reverse=True) 降序排序列表
- arr.sort(key=lambda x:x[-1]) lambda表达式条件排序
- sorted(arr) 不改变原有列表的排序,需接收返回
- sorted(arr,key=lambda x:x[1]) lambda表达式条件排序
元组tuple操作及使用场景
- 元组声明方式:t=(1,2,3) 或 t1=(3,) 或 t2=1,2,3
- tuple(range(5,6))初始化元组(5,)
- a,b = 5,10 本质是元组方式的赋值
- a,b = b,a 元组方式交换两个变量值
元组使用场景
- 固定元素集合,不需要原位改变
- 数据库访问中,select3数据行使用tuple表示
范围range操作及使用场景
- 范围声明方式:r=range(3,12,2),则序列内包含3,5,7,9,11五个元素
范围使用场景
- 一般用于生成数值序列,方便执行特定次数的循环
for i in range(13):
print('hello_world_'+str(i));