zoukankan      html  css  js  c++  java
  • 列表的相关操作和方法/深浅拷贝

    一. 列表的相关操作

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

    lst1 = ["梁新宇","孟凡伟"]
    lst2 = ["孙接口","王永捐"]
    res = lst1 + lst2
    print(res)

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

    lst1 = ["梁新宇","孟凡伟"]
    res = lst1 * 3
    print(res)

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

    lst = ["曹培显","欢庆","刘玉波","耿择时","家营和","黄常见","刘灵镇","孙翔宇"]

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

    res = lst[2:]
    print(res)

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

    res = lst[:7]
    print(res)

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

    res = lst[3:5]
    print(res)

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

    # 0 3 6 9 12 ... 曹培显 耿择时 刘灵镇
    # 从左到右 正向截取
    res = lst[::3] 
    print(res)

    # 从右向左 逆向截取
    res = lst[::-1]
    print(res)

    [:]或[::]  截取所有列表

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

    # 1.一次修改一个
    lst[1] = "菲菲"
    print(lst)
    # 2.一次修改多个 等号右边的数据必须是Iterable(容器类型数据 range对象 迭代器)
    lst[2:5] = [1,2,3,4,5,6]
    lst[2:5] = "abc"
    lst[2:5] = range(100,104)
    print(lst)
    # 3.一次修改多个(带步长) 截取几个,修改几个
    # ['曹培显', 102, 6]
    lst[::4] = [500,600,700]
    print(lst)

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

    lst = ["曹培显","欢庆","刘玉波","耿择时","家营和","黄常见","刘灵镇","孙翔宇"]
    # 1.一次删除一个
    # del lst[0]
    # print(lst)
    
    # 2.一次删除多个
    # del lst[1:5]
    # del lst[::5]
    # print(lst)
    
    # 3.注意点 (改写法删除的是res变量,不是列表)
    res = lst[::5]
    del res
    print(lst)

    二. 列表相关方法

    # append 向列表的末尾添加新的元素

    lst.append("何子豪")
    print(lst)

    # insert 在指定索引之前插入元素

    lst = ['李雅琪', '何子豪']
    lst.insert(0,"于盛林")
    print(lst)

    # extend 迭代追加所有元素

    """ 必须是Iterable这样的可迭代性数据 """
    tup = ("王雨涵","赵沈阳")
    lst.extend(tup)
    print(lst)

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

    lst = ['于盛林', '李雅琪', '何子豪', '王雨涵', '赵沈阳',"王雨涵"]
    # 默认删掉最后一个
    res = lst.pop()
    # 可以指定删除
    res = lst.pop(2)
    print(res)
    print(lst)

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

    lst = ['于盛林', '李雅琪', '何子豪', '王雨涵', '赵沈阳',"王雨涵"]
    lst.remove("王雨涵")
    print(lst)

    # 3.clear 清空列表

    lst.clear()
    print(lst)

    其他操作

    # index 获取某个值在列表中的索引

    lst = ['于盛林', '李雅琪', '何子豪', '王雨涵', '赵沈阳',"王雨涵"]
    res = lst.index("王雨涵")

    # count 计算某个元素出现的次数

    """无法像字符串中的count那样写开始和结束索引."""
    lst = ['于盛林', '李雅琪', '何子豪', '王雨涵', '赵沈阳',"王雨涵"]
    res = lst.count("王雨涵")
    print(res)

    # sort() 列表排序 (基于原有列表进行修改)

    """默认:从小到大排序"""
    lst = [1,2,100,-3,-4]
    lst.sort()
    
    """从大到小排序"""
    lst.sort(reverse=True)
    print(lst)
    
    # 针对于字母
    """ascii 编码进行排序 大小写字母ascii相差32"""
    """按照ascii编码的大小,一位一位的进行比较,默认从小到大"""
    lst = ["yingmuhuadao","liuchuanfeng","caixukun","caibu","sandingshou"]
    lst.sort()
    print(lst)
    
    
    # 针对于中文 (能排序,无规律可循)
    lst = ["王文","王源"]
    lst.sort()
    print(lst)

    # reverse 列表反转操作

    lst = ["yingmuhuadao","liuchuanfeng","caixukun","caibu","sandingshou"]
    lst.reverse()
    print(lst)

     三. 深浅拷贝

    1. 浅拷贝

    # 方法一
    lst1 = [1,2,3]
    lst2 = lst1.copy()
    lst1.append(4)
    print(lst1,lst2)
    
    # 方法二
    import copy
    # 模块.copy() # copy.copy()
    
    lst1 = [1,2,3]
    lst2 = copy.copy(lst1)
    lst1.append(5)
    print(lst1)
    print(lst2)

    2. 深拷贝

    """
    # 现象: 通过浅拷贝只能拷贝一级容器中的所有数据,形成独立副本,但是二级容器中的所有数据仍然延续以前的地址,共用同一份;
    lst1 = [1,2,3,[5,6,7]]
    lst2 = copy.copy(lst1)
    lst1[-1].append(888)
    lst1.append(999)
    print(lst1,lst2)
    """

    import copy
    lst1 = [1,2,3,[5,6,7]]
    lst2 = copy.deepcopy(lst1)
    
    # 二级容器中插入数据
    lst1[-1].append(888)
    # 一级容器中插入数据
    lst1.append(999)
    print(lst1,lst2)

    3 .总结

    浅拷贝: 只拷贝一级容器中的所有数据
        深拷贝: 拷贝所有层级中的所有元素,都单独放到全新空间,作为独立副本;
  • 相关阅读:
    centos下使用yum 安装pip
    unity3d Aniso Level 摄像机近地面清楚,远地面模糊
    Unity3D 多平台 预编译 宏定义
    Mecanim的Avater
    Mecanim 学习概述
    Unity物理系统的触发器
    Unity开发 资源准备
    我的Unity学习路线
    贴图在Unity中的设置
    在Unity中为模型使用表情
  • 原文地址:https://www.cnblogs.com/whc6/p/14056882.html
Copyright © 2011-2022 走看看