python基础-列表List及内置方法

  • 2019 年 11 月 7 日
  • 筆記

数据类型之列表-List

  • 用途:用于存一个或多个不同类型的值

  • 定义:通过中括号存值,每个值之间通过逗号进行分隔

    l1 = [1,'a',3,'b']    
  • 特性有序可变存多个值的数据类型


常用方法:

  • 索引取值:正向、反向都可存取值

    l1 = [1,'a',3,'b',['egon','alex','sean']]  print(l1[1])      # 打印结果:a  print(l1[-1])       # 打印结果:['egon', 'alex', 'sean']
  • 索引切片

    l1 = [1,'a',3,'b',['egon','alex','sean']]  print(l1[1:4])      # 获取索引为[1-4)之间的元素,不包含索引为4的元素  print(l1[2:])       # 获取索引为2 之后的元素,包含索引为2的元素  print(l1[:3])       # 获取索引为3 之前的元素,不包含索引为3的元素  print(l1[-2:])      # 获取索引为-2 之前的元素,包含索引为-2 的元素  print(l1[:-2])      # 获取索引为-2 之后的元素,不包含索引为-2 的元素
  • append

    语法:list.append() ,将一个元素增加到列表的最后

    l1 = [1,'a',3,'b']  l1.append(['name','age'])       # 一个列表也是一个元素  print(l1)                       # 打印结果:[1, 'a', 3, 'b', ['name', 'age']]
  • insert

    语法:list.insert() 通过索引,将元素增加到指定位置

    l1 = [1,'a',3]  l1.insert(1,'b')       # 将'b' 插入到索引为1 的位置,列表中的其他元素往后移动  print(l1)              # 打印结果:[1, 'b', 'a', 3]
  • extend

    语法:list.exteng()可迭代对象或集合打散后,新增到列表的最后

    # 将字符串新增到列表中  l1 = [1,'a',3]  l1.extend("abc")  print(l1)         # 打印结果:[1, 'a', 3, 'a', 'b', 'c']    # 将元组新增到列表中  l1 = [1,'a',3]  l1.extend((1,3,4))  print(l1)         # 打印结果:[1, 'a', 3, 1, 3, 4]    # 将字典新增到列表中,只取字典的key值 作为列表中的元素  l1 = [1,'a',3]  l1.extend({'name':'dawn','age':18})  print(l1)         # 打印结果:[1, 'a', 3, 'name', 'age']    # 将集合新增到列表中  l1 = [1,'a',3]  l1.extend({4,5,6})  print(l1)         # 打印结果:[1, 'a', 3, 4, 5, 6]
  • remove

    语法:list.remove() 通过指定值删除,不能通过索引删除,会报错,存在相同元素时,只会删除第一个

    l1 = [1, 'a', 3, 4, 5, 6]  # l1.remove(0)            # 通过索引删除,报错  l1.remove(4)  print(l1)             # 打印结果:[1, 'a', 3, 5, 6]
  • pop

    语法:list.pop() 不传参时,默认从最后开始删除,否则删除指定索引元素。返回值为被删除的元素,remove() 没有返回值

    l1 = [1, 'a', 3, 4, 5, 6]  d1 = l1.pop()  d2 = l1.pop(1)  print(d1)         # 打印结果:6  print(d2)         # 打印结果:a  print(l1)         # 打印结果:[1, 3, 4, 5]
  • del

    语法:del element 万能删除方法

    # del的使用,万能删除  l1 = [1, 2, 3, 4, 5]  print(f"l1:{l1}")  del l1[2]  print(f"删除后的l1:{l1}")
  • count

    语法:list.count() 统计当前列表内指定元素的个数

    # count():用于统计当前列表内指定元素的个数  l1 = ['egon', 'alex', 'tank', 'sean', 'a']  print(f"元素a 出现的次数:{l1.count('a')}")
  • index

    语法:list.index() 获取当前指定元素的索引值,可以指定查找范围(顾头不顾尾),如果没有找到,报错

    # index():获取当前指定元素的索引值,可指定查找范围(顾头不顾尾),如果没有找到,提示ValueError异常  l1 = ['egon', 'alex', 'tank', 'sean', 'a']  print(f"alex在列表中的出现的位置是{l1.index('alex')}")  print(f"从索引0到2中查找tank出现的位置是:{l1.index('tank',0,3)}")
  • sort

    语法:list.sort() 用于排序,可指定排序的方式,默认排序从小到大,reverse=False

    # sort():排序,在原列表中排序,可指定排序的方式,默认排序为正序  l1 = [9, 5, 84, 2, 56, 35, 28]  l1.sort()  print("l1默认排序后为:{list}".format(list=l1))  l1.sort(reverse=True)  print("l1的倒序为:{list}".format(list=l1))    # 字符串的排序方式按照ASCII 码排序 null < 空格 < 0 < 9 < A < Z < a < z  l2 = ['1', 'a', 'M', '9', 'c']  l2.sort()  print("l2默认排序后为:{list}".format(list=l2))  l2.sort(reverse=True)  print("l2的倒序为:{list}".format(list=l2))
    # sort() 和sorted() 的区别  """sort() 和sorted() 的区别     sort() 是列表List 的内置方法,可用通过类名.方法名调用     sort() 是在原列表本身排序,操作,排序完后,不记录原来的位置     sorted() 是python 级的内置方法,调用sorted() 方法后,会生成一个新的列表,列表原来的顺序依然保留  """  l1 = [9, 5, 84, 2, 56, 35, 28]  print("l1使用sort 排序后为:{list}".format(list=l1.sort()))  # 没有返回值,打印结果为:None  print("l1使用sorted 排序后为:{list}".format(list=sorted(l1)))  # 返回值为排序后的列表  l1.sort()  print("l1使用sort 排序后为:{list}".format(list=l1))
  • clear

    语法:list.clear() 清空列表中的元素,返回一个空列表

    # clear():清空列表中的元素,返回一个空列表  l1 = [9, 5, 84, 2, 56, 35, 28]  print("l1的内容为:{list}".format(list=l1))  print("l1被清空后:{list}".format(list=l1.clear()))

扩展

  1. 队列:先进先出

    # 队列:先进先出;  l1 = []  l1.append(1)  l1.append(2)  l1.append(3)  print("队列的实现:")  # 实现队列:先进先出  print(l1)  for i in l1:      l1.pop(0)      print(l1)
  2. 栈:先进后出

    栈:先进后出  l1 = []  l1.append(1)  l1.append(2)  l1.append(3)  print("栈的实现:")  print(l1)  for i in l1:      l1.pop()      print(l1)
  3. 拷贝

    相当于赋值操作,list2 = list1 当list1 的内容发生改变时,list2 的值也会相应的发生改变

    list1 = [1,2,3,['a','b']]  list2 = list1  print(list1)     # 打印结果:[1,2,3,['a','b']]  print(list2)     # 打印结果:[1,2,3,['a','b']]    list1.append('e')  print(list1)     # 打印结果:[1,2,3,['a','b'],'e']  print(list2)     # 打印结果:[1,2,3,['a','b'],'e']
  4. 浅拷贝

    浅拷贝是copy模块中的copy()函数list2 = copy.copy(list1) ,当list1 中的非子序列发生改变,list2 不会发生改变,但如果list1 内的子序列发生变化,list2 的对应子序列也会发生改变

    import copy as cy  list1 = [1,2,3,['a','b']]  list2 = cy.copy(list1)  list1.append(4)  print(list1)  print(list2)            # list2 没有发生改变    list1[3].append('e')  print(list1)  print(list2)            # list2 子序列中追加了 'e'
  5. 深拷贝

    深拷贝是copy模块中的deepcopy()函数list2 = copy.deepcopy(list1) ,无论list1 怎么改变,list2 都不会改变

    import copy as cy  list1 = [1,2,3,['a','b']]  list2 = cy.deepcopy(list1)  list1.append(4)  print(list1)  print(list2)            # list2 没有发生改变    list1[3].append('e')  print(list1)  print(list2)            # list2 依然没有发生改变