zoukankan      html  css  js  c++  java
  • 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]]
  • 相关阅读:
    idea设置全局ignore
    win 2012 安装mysql 5.7.20 及报错 This application requires Visual Studio 2013 Redistributable. Please ins
    win 2012 安装mysql 5.7.20 及报错 This application requires Visual Studio 2013 Redistr
    kafka 删除 topic
    java编译中出现了Exception in thread “main" java.lang.UnsupportedClassVersionError
    Centos中使用yum安装java时,没有jps的问题的解决
    Spring 整合Junit
    Spring纯注解配置
    Spring 基于注解的 IOC 配置
    打印java系统的信息
  • 原文地址:https://www.cnblogs.com/Magicianlx/p/13338962.html
Copyright © 2011-2022 走看看