列表+元组

159 阅读2分钟

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

1. 列表 – list【有序可修改】

创建

  1. x = [1, 2, 3]
  2. x= list(range(起始,终止, 步长))
  3. 推导式 -- x = [表达式 for i in range() if ]
  4. [a] * 3 只是创建3个指向list的引用,一旦a改变,x中的3个a也会改变
    a = [0] * 3
    x = [a] * 3
    x = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

添加

  1. 末尾 -- append【当作一个整体放在末尾的第一个位置】/ extend 【所有东西依次添加在末尾后】
  •     x = ['11']
    
  •     x.append([22, 33]) -- x = ['11', [22, 33]]
    
  •     x.extend([22, 33]) -- x = ['11', 22, 33]
    
  1. 随即位置 -- insert(索引位置,值)

删除

  1. pop(指定索引位置) -- 不填默认删最后一个 -- 删后还能用
  2. remove(指定删除的元素) -- 要填
  3. del x[起始删除:最后删除位置] -- 删后即焚【没了】

获取

  1. x[起始 : 终止 : 步长] -- 【所有的起始终止都是左闭右开】
  2. 浅拷贝 -- y = x[:] -- 对x排序等操作不会影响y
  3. 深拷贝 -- y = x -- 对x的操作都会影响到y一起变 如果 x = [[1, 2, 3], [4, 5, 6]] x[0][0] = 66 深拷贝和浅拷贝都会变!!!

常用操作符

  1. == 一模一样为true
  2. 【拼接,相当于extend】【创建新list对象 消耗多余内存】【extend,append,insert 直接改变原数组中】
  3. 复制 -- [1, 2] * 3 = [1, 2, 1, 2, 1, 2]
  4. in/ not in -- 在里面/不在里面 -- 成员关系

其他方法

  1. list.count(obj) -- 某数出现的次数
  2. list.index(obj, 起始位置,终止位置) -- 某数出现的索引位置
  3. list.reverse() -- 反向列表中的元素
  4. sort (key = 函数) -- 根据函数的返回值进行排序,比如是根据二维数组的第二位进行排序

2. 元组 – tuple 【有序不可修改】

  1. 基本操作同列表 -- 只有一个元素要加逗号,否则会被认为整型等 -- 【(1,)】
    1. 创建 直接赋值 tuple(range()) 推导式 乘
    2. 创建二维元组 x = (1, 2, 3), (4, 5, 6) print(x) -- ((1, 2, 3), (4, 5, 6))
    3. 没有添加,删除
      更新和删除一个元组 -- 对元组内部的值进行操作
      1. 更新 x = (1, 2, 3, 5) x1 = x(:2) + (4, ) + x(2: )
      2. 删除 x = (1, 2, 3, [4, 5]) x[3][0] = 6
    4. 获取 -- x [起始,终止,步长]
    5. 常用操作符 -- ==, + ,*, in/ not in
    6. 其他方法 -- 由于不可变,只有 count和index
  2. 解压 一维数组
    t = (1, 2, 3)
    (a, b, c) = t
    print(a, b, c)
    二维数组
    t = (1, 2, 3, (4, 5))
    (a, b, c, (d, e)) = t
    print(a, b, c, (d, e))