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 依然没有发生改变
    
posted @ 2019-11-07 23:11  格桑_哈哈  阅读(190)  评论(0编辑  收藏  举报