python(二)序列

来源:互联网 发布:arm7也是keil编程吗 编辑:程序博客网 时间:2024/06/03 23:02

    • 序列
      • 可变序列
      • 不可变序列
      • 序列通用操作
      • 可变序列通用操作
      • 列表list操作
      • 元组tuple操作及使用场景
        • 元组使用场景
      • 范围range操作及使用场景
        • 范围使用场景

序列

存储一系列对象的数据类型,统称为序列

可变序列

列表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));