zoukankan      html  css  js  c++  java
  • python基础-列表List及内置方法

    数据类型之列表-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 依然没有发生改变
      
  • 相关阅读:
    TC SRM 591 (Div2. Practice only)
    SDL2 简单实现图片缩放移动查看
    Linux下socket编程 address already in use 问题
    POJ 2155 二维树状数组
    OJ开发笔记(1)
    开通博客啦~
    [转]STL transform算法中使用toupper函数
    Monkey and Banana HDU 1069
    Ignatius and the Princess IV HDU 1029
    Dungeon Master POJ 2251
  • 原文地址:https://www.cnblogs.com/xiaodan1040/p/11806002.html
Copyright © 2011-2022 走看看