• 7.19_python_lx_day8_list


    一.列表的相关操作

    (1)列表的拼接 (同元组)
    (2)列表的重复 (同元组)
    (3)列表的切片 (同元组)
      语法 => 列表[::] 完整格式:[开始索引:结束索引:间隔值]
        (1)[开始索引:] 从开始索引截取到列表的最后
        (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
        (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
        (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
        (5)[:]或[::] 截取所有列表
        (4)列表的获取 (同元组)
        (5)列表的修改 ( 可切片 )
        (6)列表的删除 ( 可切片 )

    (1)列表的拼接 (同元组)

    1 lst1 = [1,2,3]
    2 lst2 = [4,5,6,6]
    3 res = lst1 + lst2
    4 print(res)#[1, 2, 3, 4, 5, 6, 6]

    (2)列表的重复   (同元组)

    lst= [1,2,3]
    res = lst*3
    print(res)#[1, 2, 3, 1, 2, 3, 1, 2, 3]

    (3)列表的切片   (同元组)

    <1>[开始索引:]  从开始索引截取到列表的最后

    1 lst = ['a','b','c','d','e','f','g']
    2 res = lst[2:]#2 3 4 5 6.....
    3 print(res)#['c', 'd', 'e', 'f', 'g']

    <2>[:结束索引]  从开头截取到结束索引之前(结束索引-1)

    1 lst = ['a','b','c','d','e','f','g']
    2 res = lst[:4] #0 1 2 3
    3 print(res)# ['a', 'b', 'c', 'd']

    <3>[开始索引:结束索引]  从开始索引截取到结束索引之前(结束索引-1)

    1 lst = ['a','b','c','d','e','f','g']
    2 res = lst[4:6]
    3 print(res)#['e', 'f']

    <4>[开始索引:结束索引:间隔值]  从开始索引截取到结束索引之前按照指定的间隔截取列表元素值

    1 lst = ['a','b','c','d','e','f','g']
    2 # 正向截取
    3 res = lst[::2] # 0 2 4 6 8  ... 
    4 print(res)#['a', 'c', 'e', 'g']
    5 # 逆向截取
    6 res = lst[::-2] # -1 -3 -5 -7 -9
    7 print(res)#['g', 'e', 'c', 'a']

    <5>[:]或[::]  截取所有列表

    1 lst = ['a','b','c','d','e','f','g']
    2 res = lst[:]#['a', 'b', 'c', 'd', 'e', 'f', 'g']
    3 res = lst[::]#['a', 'b', 'c', 'd', 'e', 'f', 'g']
    4 print(res)

    (4)列表的获取   (同元组)

    1 #        0       1        2        3       4     5        6    7
    2 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
    3 #       -8      -7        -6     -5       -4     -3      -2    -1
    4 res = lst[7]#lx
    5 res = lst[-1]#lx
    6 print(res)

    (5)列表的修改   ( 可切片 )

    要求的数据类型是可迭代性数据(容器类型数据,range对象,迭代器)

    <1>利用切片可以一次修改多个元素,没有个数上的限制

    1 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
    2 lst[3:5] = ["cd","ab","sb刘子豪"]
    3 print(lst)#['吕洞宾', '何仙姑', '铁拐李', 'cd', 'ab', 'sb刘子豪', '蓝采和', '韩湘子', 'lx']

    <2>切片配合步长,切出多少个元素,修改多少个元素

    1 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","王文"]
    2 lst[::2] = range(1,5) # 0 2 4 6 8 10 .....
    3 print(lst)#[1, '何仙姑', 2, '曹国舅', 3, '蓝采和', 4, '王文']

    (6)列表的删除   ( 可切片 )

    1 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
    2 del lst[-1]
    3 print(lst)#['吕洞宾', '何仙姑', '铁拐李', '曹国舅', '张果老', '蓝采和', '韩湘子']

    注意:

    删除的是变量res本身,不是列表中的元素

    1 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
    2 res = lst[-1] #lx
    3 del res
    4 print(lst)#["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]

    del lst[::3]

    1 lst = ["吕洞宾","何仙姑","铁拐李","曹国舅","张果老","蓝采和","韩湘子","lx"]
    2 del lst[::3] # 0 3 6 9 12 ...
    3 print(lst)#['何仙姑', '铁拐李', '张果老', '蓝采和', 'lx']

    元组中的列表,里面的元素可以修改

    1 tup = (1,2,3,[4,5,6,(7,8,9)])
    2 tup[-1][1] = 6666
    3 print(tup)#(1, 2, 3, [4, 6666, 6, (7, 8, 9)])

    二.列表相关的函数

    (1)append 向列表的末尾添加新的元素

    1 lst = ['a']
    2 lst.append('b')
    3 print(lst)#['a', 'b']

    (2)insert 在指定索引之前插入元素

    1 lst=['a','b']
    2 lst.insert(1,'c')
    3 print(lst)#['a', 'c', 'b']

    (3)extend 迭代追加所有元素

    要求:数据的类型是可迭代性数据

    1 lst = ['a']
    2 strvar = 'bcdefg'
    3 lst.extend(strvar)
    4 print(lst)# ['a', 'b', 'c', 'd', 'e', 'f', 'g']

    (1)pop  通过指定索引删除元素,若没有索引移除最后那个

    1 lst=['a','b','c','d','e']
    2 lst.pop(0)#['b', 'c', 'd', 'e']
    3 lst.pop() #['a', 'b', 'c', 'd']
    4 print(lst)

    (2)remove 通过给予的值来删除,如果多个相同元素,默认删除第一个

    1 lst=['a','b','c','d','e']
    2 lst.remove('c')
    3 print(lst) #['a', 'b', 'd', 'e']

    (3)clear 清空列表

    1 lst=['a','b','c','d','e']
    2 lst.clear()
    3 print(lst)#[]

    改查(参考:列表的相关操作)

    其他函数

    (1)index 获取某个值在列表中的索引

    1 lst=['a','b','c','d','e']
    2 lst.index('d')
    3 print(lst)#3

    (2)count 计算某个元素出现的次数

    重点区别:

    字符串里面的count 可以划定范围,列表里面的count不行

    1 lst=['a','b','c','d','e','b','b','f','b']
    2 res=lst.count('b')
    3 print(res)#4

    (3)sort() 列表排序(默认小到大排序)

    1 lst = [44,99,1,10,3,-5,-90]
    2 lst.sort()
    3 print(lst)#[-90, -5, 1, 3, 10, 44, 99]

    sort(reverse=True)  从大到小排序

    1 lst=[-90, -5, 1, 3, 10, 44, 99]
    2 lst.sort(reverse=True)
    3 print(lst)#[99, 44, 10, 3, 1, -5, -90]

    排序英文 (ascii 编码)一位一位进行比较,在第一位相同的情况下,比较第二位,以此类推

    也可以对中文进行排序!(无规律可循)

    (4)reverse() 列表反转操作

    1 lst = ["lx","刘德华","郭富城","张学友"]
    2 lst.reverse()
    3 print(lst)#['张学友', '郭富城', '刘德华', 'lx']

    三.浅拷贝 和 深拷贝

    总结:
      (1)浅拷贝只拷贝一级容器中的所有数据
      (2)深拷贝拷贝所有层级的所有元素
      浅拷贝速度比深拷贝速度快


      深拷贝在执行时: 如果是不可变数据,地址会暂时的指向原来数据,
               如果是可变数据,直接开辟新空间


      不可变数据: Number str tuple
      可变数据 : list set dict

    先引入模块

    import copy

    (1)浅拷贝

     方法一 copy.copy 模块.方法

    1 lst1 = [1,2,3]
    2 lst2 = copy.copy(lst1)
    3 print(lst2)#[1, 2, 3]

    方法二  列表.copy()

    1 lst1 = [1,2,3]
    2 lst2 = lst1.copy()
    3 print(lst2)#[1, 2, 3]

     (2)深拷贝 copy.deepcopy

    1 lst1 = [1,2,3,[4,5,6]]
    2 lst2 = copy.deepcopy(lst1)
    3 print(lst2)#[1, 2, 3, [4, 5, 6]]
  • 相关阅读:
    根据nba数据预测17-18总冠军(转)
    mysql删除数据(delete)之后如何释放磁盘空间
    base64加密常用命令
    mysqldump报错:Error 2013: Lost connection to MySQL server during query when dumping table `mng_fdbk_reply` at row: 444087
    rsync安装配置与使用
    find 命令日常使用
    使用XtraBackup全量备份还原
    lvs 虚IP 轮训配置
    mysql-binlog 日志清理
    查看mysql正在执行的sql进程
  • 原文地址:https://www.cnblogs.com/Magicianlx/p/13338962.html
Copyright © 2020-2023  润新知