系列文章目录

一、列表(list)常用操作

  • 定义:

    l = [1, 2, 'a', [3, 'b']]  # 使用方括号[],元素用逗号隔开
    

    列表、字典、元组类型可以相互包含,而集合类型只能被前面的类型包含,不可以包含这些类型

  • 类型转换:

    只要是可遍历类型,都可以转换为列表,如字符串、元组、字典等。

    print(list('hello'))  # 打印:['h', 'e', 'l', 'l', 'o']
    print(list({
         'name':'hugh', 'age': 17}))  # 打印:['name', 'age']
    
  • 通过索引读取或修改:

    通过下标(索引),即可获取指定位置的元素,也可以进行修改操作。

    l = [1, 2, 3]
    print(l[0])  # 打印:1;下标从零开始
    print(l[-1])  # 打印:3;负数索引代表从右往左计数,从-1开始
    
    l[0] = 999
    print(l[0])  # 打印:999
    

    列表中含有列表,可以把内层列表看成一个元素。更深层次的嵌套还是这个道理。

    l1 = [1,2, [3, 4, 5]]  # 把整个[3, 4]看成一个元素,下表为2;
    print(l1[2][1])  # 打印 4
    

    注意:无论是读取还是修改,超出索引范围会报错!!!

  • 追加:

    • 追加元素-append()

      l = [1, 2, 3]
      l.append(4)  # 会追加到列表末尾
      print(l)  # 打印:[1, 2, 3, 4]
      
    • 追加容器类型-extend()

      l1 = [1, 2, 3]
      l2 = [4, 5, 6]
      l1.extend(l2)  # 会将列表元素一个个追加到l1,而不是追加整个列表l2
      print(l1)  # 打印:[1, 2, 3, 4, 5, 6]
      # 追加字典,只会将键追加进去
      
  • 插入元素-insert()

    l = [1, 2, 3]
    l.insert(1, '插队的')  # 1代表要插入的位置,后面的元素会依次后移
    print(l)  # 打印:[1, '插队的', 2, 3]
    
  • 删除:

    • del 关键字(通用的删除方法):

      l = [1, 2, 3]
      del l[-1]  # 只会删除3,没有任何返回值;如果试图保存到变量,则会报错
      
    • 指定索引删除-pop()

      pop()会将删除的元素返回,如果不指定索引,默认删除末尾元素。

      l = [1, 2, 3, 4, 5]
      a = l.pop()  # 默认删除末尾元素,并返回该元素
      print(a)  # 打印:5
      
      b = l.pop(1)  # 指定要删除元素的下标
      print(b)  # 打印:2
      
    • 指定元素删除-remove()

      l = [1, 2, 'xyz', 3]
      l.remove('xyz')  # 指定要删除的元素,返回值为None(空的,啥都没有)
      print(l)  # 打印:[1, 2, 3]
      
  • 清空列表-clear()

    l = [1, 2, 3, 4, 5]
    print(l.clear())  # 打印:None(空的,啥都没有)
    
  • 切片:

    切片会将切片后的内容拷贝一份,形成一个新的列表。

    l = [1, 2, 3, 4, 5]
    a = l[0:3]  # 会保存在另一块内存空间中
    print(a)  # 打印:[1, 2, 3]
    

    列表与字符串一样,也支持负数索引,也可以进行倒转操作。

    l1 = [1, 2, 3, 4, 5]
    l2 = l1[::-1]
    print(l2)  # 打印:[5, 4, 3, 2, 1]
    
  • 统计列表长度-len()

    l = [1, 2, 3, 4, 5]
    print(len(l))  # 打印:5
    
  • 统计元素出现次数-count():

    l = [1, 2, 3, 3, 3, 3]
    print(l.count(3))  # 打印:4
    
  • 查找指定元素的索引-index():

    index()只返回找到的第一个元素的下标

    l = [1, 2, 'hugh', 4, 5, 'hugh']
    print(l.index('hugh'))  # 打印:2
    
  • 排序-sort()

    排序时,列表内的元素必须是同一种类型,它们按照ASCII码表的顺序进行排序,也就是说,字符串类型也可以进行排序(按照首字母,首字母相同则比较第二个字母,以此类推)。

    l1 = [1, 4, 6, 2, 3, 9, 0]
    l2 = ['tom','hugh', 'judy','alex']
    l1.sort(reverse=False)  # reverse=Flase表示升序排序(从小到大),这是默认方式
    print(l1)  # 打印:[0, 1, 2, 3, 4, 6, 9]
    l1.sort(reverse=True)  # 降序(从大到小)
    print(l1)  # 打印:[9, 6, 4, 3, 2, 1, 0]
    l2.sort()  # 默认升序
    print(l2)  # 打印:['alex', 'hugh', 'judy', 'tom']
    
  • 循环遍历:

    与字符串的遍历操作相同。

二、元组(tuple)常用操作

元组内的元素不可修改,准确的说,元组内部保存的是自身元素的地址,而这些地址是不能够改变的。如果像list那样修改,会报错。

  • 定义:

    t1 = (1, 2, 'a', [3, 5])  # 使用圆括号()
    t2 = (1,)  # 定义只有一个元素的元组时,要加一个额外的逗号
    

    虽然元组不可修改,但元组内如果包含如列表这样的可变类型,则不影响内部可变类型元素的修改。

    t1 = (1, 2, 'a', [3, 5])  # 包含了一个列表
    t1[3][1] = 0  # 原来的t1[3][1]是5
    print(t1)  # 打印:(1, 2, 'a', [3, 0]),原来的5现在修改为0了
    

    注意:此处修改的不是元组,而是元组里边的列表元素,元组仅仅保存了这个列表元素的地址。列表内元素的修改,不会导致元组保存的列表元素的地址改变,所以列表内的元素可以修改。

  • 类型转换:

    s = 'hello'
    t = tuple(s)
    print(t)  # 打印:('h', 'e', 'l', 'l', 'o')
    
  • 切片:

    与列表的切片操作相似。

    其他如统计长度、遍历等操作也都与列表类似。

列表内元素的修改,不会导致元组保存的列表元素的地址改变,所以列表内的元素可以修改。

  • 类型转换:

    s = 'hello'
    t = tuple(s)
    print(t)  # 打印:('h', 'e', 'l', 'l', 'o')
    
  • 切片:

    与列表的切片操作相似。

其他如统计长度、遍历等操作也都与列表类似。

下一篇