• 20201225-2 列表的使用2


    1 copy 相当于复制一个列表
    names = ["4ZhangYang","#!Guyun","xXiangPeng","ChenRonghua","XuLiangChen"]
    name2 = names.copy()
    print(names)
    print(name2)
    --->
    ['4ZhangYang', '#!Guyun', 'xXiangPeng', 'ChenRonghua', 'XuLiangChen']
    ['4ZhangYang', '#!Guyun', 'xXiangPeng', 'ChenRonghua', 'XuLiangChen']
    1-1 现在把 XiangPeng 改成中文
    names[2] = "向鹏"
    print(names)
    print(name2)
    name2 变了吗? 没有变
    ---> ['4ZhangYang', '#!Guyun', '向鹏', 'ChenRonghua', 'XuLiangChen']
    ---> ['4ZhangYang', '#!Guyun', 'xXiangPeng', 'ChenRonghua', 'XuLiangChen']
    
    1-2 列表中可以继续写列表,形成子列表,现在希望将 alex 大写 names = ["4ZhangYang","#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangChen"] name2 = names.copy() 子列表 ["alex","jack"] 可以当做一个元素 names[2] = "向鹏" names[3][0] = "ALEXANDER" print(names) print(name2) ---> ['4ZhangYang', '#!Guyun', '向鹏', ['ALEXANDER', 'jack'], 'ChenRonghua', 'XuLiangChen'] ---> ['4ZhangYang', '#!Guyun', 'xXiangPeng', ['ALEXANDER', 'jack'], 'ChenRonghua', 'XuLiangChen'] name2中 没有 向鹏 但是 ALEXANDER 在 names 和 name2 中 都修改了 这个 copy 好像只是 copy 了 第一层,没错,这个 copy 叫做 浅拷贝,只拷贝 第一层 子列表是一个独立的内存指针,是大列表中的一个内存地址;copy其实是 拷贝了 内存地址 所以 ALEXANDER 也变了
    2 如果想深拷贝怎么办?列表是一种不同于 数字 和字符串的 数据类型
    >>> a=1
    >>> b=a
    >>> a=2
    >>> b
    1
    但是,如果换成列表
    >>> a=[1,2,3]
    >>> b=a
    >>> a[1]=555
    >>> b
    [1, 555, 3]
    可以 用
    import copy 的方式 import copy names = ["4ZhangYang","#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangChen"] name2 = copy.copy(names) names[2] = "向鹏" names[3][0] = "ALEXANDER" print(names) print(name2) ---> ['4ZhangYang', '#!Guyun', '向鹏', ['ALEXANDER', 'jack'], 'ChenRonghua', 'XuLiangChen'] ---> ['4ZhangYang', '#!Guyun', 'xXiangPeng', ['ALEXANDER', 'jack'], 'ChenRonghua', 'XuLiangChen'] 这个和 列表中的 copy 是完全一样的
    必须手动的写 深拷贝 name2
    = copy.deepcopy(names) ---> ['4ZhangYang', '#!Guyun', '向鹏', ['ALEXANDER', 'jack'], 'ChenRonghua', 'XuLiangChen'] ---> ['4ZhangYang', '#!Guyun', 'xXiangPeng', ['alex', 'jack'], 'ChenRonghua', 'XuLiangChen'] 这时,完全独立了,这就是 深拷贝 和 浅拷贝 深拷贝需求量不大,深拷贝会占用两个独立空间
    3 如果想做列表的循环
    3-1
    for i in names:
        print(i)
    --->
    4ZhangYang
    #!Guyun
    xXiangPeng
    ['alex', 'jack']
    ChenRonghua
    XuLiangChen
    3-2 有步长的切片
    names = ["4ZhangYang","#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangChen"]
    print(names[0:-1:2])
    ---> ['4ZhangYang', 'xXiangPeng', 'ChenRonghua']
    0 可以省略,变为
    print(names[::2])
    如果去掉步长,print(names[:]) 代表 0 到 -1 
  • 相关阅读:
    linux文件操作
    文件和目录维护
    随心而记
    开学了
    基本逻辑门电路原理
    ubuntu搭建ftp服务
    中断
    数码管
    字,寻址和移位
    Error: Could not find or load main class resourcemanager
  • 原文地址:https://www.cnblogs.com/azxsdcv/p/14189646.html
Copyright © 2020-2023  润新知