py基础之List

List列表:


    什么是List列表?
        list是py中的一种基础数据结构,用于存储一组有序的数据集合。列表的数据项不需要具有相同的数据类型,
    --集合的创建:
        创建一个list只需要把逗号分隔的不同的数据项使用方括号括起来即可。
        1:新建集合是直接初始化集合
            例如:students=["张三","李四","王五","赵六","魏八"]
        2:新建一个空集合,后期通过append()方法插入。
            例如:pets=[]
                 pets.append("猫咪")
                 pets.append("二哈")
    --list元素访问?
        通过元素的下标访问
        list1=[1,2,3,4,5,6,7,8,9,10]
        print(list1[0]) #结果:1,解释:获取列表的第一个元素(下标为0)
        print(list1[-1]) #结果:10 解释:获取列表的最后一个元素
        print(list1[4:]) #结果:5-10 解释:获取列表下标为4到最后一个元素
        print(list1[:4]) #结果:1,2,3,4 解释:获取列表第一个到下标为4的元素
        print(list1[:-5]) #结果: 1-5 解释:获取列表第一个到-5+1个元素
        print(list1[-5:]) #结果:6-10 解释:获取列表第-5个到最后一个元素
        print(list1[1:5]) #结果:2-5 解释:获取列表下标1-5的元素
        print(list1[-4:-1]) #结果:7-9
        print(list1[1::2]) #[起始索引:结束索引:变化索引] 结果:2,4,6,8,10
        print(list1[-6:-1:2]) #结果:5,7,9

    --list元素遍历:
        len(list)函数返回集合元素数量
        遍历方法一:while循环遍历:
            i=0
            while i<len(list1):
                print(i,":",list1[i])
                i+=1
        遍历方法二:for循环遍历1:
            for i in range(0,len(list1)):
                print(i,":",list[i])
        遍历方法三:for循环遍历2:
            for pet in list1:
                print(pet)
                
    --list的操作:
        1:=(赋值)
        2:copy() 复制
        3:+(合并)
        4:*(让集合重复多少次)
        5:len() 返回list元素的个数
        6:in 成员运算符,判断某一个元素是否存在list内
        7:添加元素:
            方法一:
                list.append("con"):添加到list末尾
            方法二:
                list.insert(1,"con"):将con插入到list指定位置
            方法三:
                list.extend([1,2,3]):添加一个list到当前list
        8:删除元素:
                1:list.remove():删除元素,参数为具体的元素值,而非元素索引。
                    注:若有多个重复值,remove()只删除第一个    
                2:list.pop():删除元素,参数为元素索引值
                    注:若pop()五参数,默认删除最后一个
                3:使用del删除:
                    del list[0] # 删除第1个元素
                    del list[2:6] # 切片方式,删除第二到第五个 
        9:清空list:
            list.clear()
            
    --list计算(mix,max,sum):
        mix(list):计算列表的最小值,若为字符串则按ASCII值计算
        max(list):计算列表最大值,若为字符串则按ASCII值计算
        sum(list):计算列表元素之合,若为字符串则报错
        注:min,max只能应用与所有元素都为数值或字符串。


    --list排序:
        list.sort():列表元素排序,默认为升序。
        若想倒序:
            1:现将列表排序然后反转:
                list.sort()
                list.reverse()
            2:list.sort(reverse=True)
        注:sort()方法会更改存储顺序
        
        sorted(list):排序,但不更改存储顺序
        
    --list查找元素:
        list.index(con):若能查找到反悔该元素的索引值。若有多个值,那么返回查找到的第一个元素索引值。
        index()方法可以传入查找范围参数:
        index(999,0,10):查找999,从列表索引0到索引10之间
        
    --list统计:
        list.count(con):返回列表内指定元素的个数
        
    --list浅拷贝与深拷贝:
        我们经常需要对list进行复制,复制分为浅拷贝和深拷贝。
        浅拷贝和深拷贝的区别在于:我们修改其中一个是否会对另外一个造成影响。即:这两个list在内存中是否存储在同一个区域。
        --使用=直接赋值(非拷贝方法)
            如果使用=直接进行赋值,这是非拷贝方法,两个list是等价的,修改其中任何一个都会影响到另外一个list。
            


        --浅拷贝:
            1:使用copy()方法:
                可以发现:copy()方法对于list的第一层实现了深拷贝,但对于嵌套的list仍然只是浅拷贝,因为内层的list在存储时只是存储了内存地址,copy()进行拷贝时也只是简单的把地址复制过去了,嵌套的list在内存中指向的还是同一个。
                


            2:使用for循环拷贝:
                可以发现:使用for一个个把list内的元素添加到新list,也只是一种浅拷贝。只能对第一层实现深拷贝。
                


            3:使用切片进行拷贝:
                可以发现:依旧只是对第一层实现了深拷贝,内层嵌套的list依旧只是将内存地址拷贝了过去,指向的还是同一个list。
                


        --深拷贝:
            如果要实现深拷贝可以通过copy模块下的deepcopy()方法来实现,无论多少层,怎样的形式拷贝后的新list都和原来的list无关了,此时无论对新list进行怎样的操作都不会在影响旧list。
            注:使用deepcopy()需要先import copy

扫描二维码关注公众号,回复: 6757525 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_41558265/article/details/91516497