zoukankan      html  css  js  c++  java
  • 深浅拷贝、元组、字典、集合

    深浅拷贝

    1、值拷贝

      ls1 = [1,2,3]

      ls2 = ls1

    #ls2直接把栈区里ls1存的地址拿过来,也指向堆区里列表的id

    #原列表发生ls1改变(不是重新赋值),ls2也跟着发生改变

    2、浅拷贝

      ls1 = [1,2,3]

      ls2 = ls1.copy()

    #浅拷贝首先是在堆区里重新开辟一个新的空间存放列表,所以id(ls1)和id(ls2)不一样

    #然后把原列表里存的地址直接拿过来(最后指向和原列表相同的值),

    #如果原列表ls1里不可变类型的值发生重新绑定,ls2的值不发生影响,

    #如果原列表ls1里可变类型的值发生重新绑定,ls2的值跟着发生影响。

    3、深拷贝

      ls1 = [1,2,3]

      from copy import deepcopy

      ls2 = deepcopy(ls1)

    #深拷贝首先是在堆区里重新开辟一个新的空间存放列表,所以id(ls1)和id(ls2)不一样

    #然后把原列表里存的不可变类型值的地址直接拿过来(最后指向和原列表相同的值),可变类型的值重新复制一份,存入新地址

    #如果原列表ls1里不可变类型的值发生重新绑定,ls2的值不发生影响,可变类型发生改变,ls2也不会发生影响

    元组

    #元组可以理解为不可变的列表

    #1、元组可以存放多个值  可以进行成员运算

    #2、元组里可以存放任意类型的值

    #3、元组是有序的    #可以进行索引取值并且可以切片

    #4、可以存放重复的值  #可以进行计数

    基本操作

    1、索引取值

    2、成员运算

    3、长度

    4、切片

    5、运算(拼接)

    6、for循环

    方法

    1、计数

    print(t1.count(0))  # 对象0在元组中出现的次数

    2、查找索引

    print(t1.index(123, 4, len(t1))) # 对象123在区间4~末尾第一次出现的索引

    字典

    #容器(集合):可以存放多个值

    #单列容器:list |  tuple

    #双列容器(map):只有dict,存放数据成对出现,dict存放数据采用key-value键值对方式

    #字典中的key只能是不可变类型

      --key是字典取值的唯一依据,key一旦确定,就必须确保唯一性

    #字典中的value可以为任意类型

      --value是用来存放世间万物,并且可以重复,可以改变  ==>字典是可变类型

    dic = {'a':1,'b':3,1:10,'c':11,True:100}  在字典里True和False就是1和0

      -->{'a':1,'b':3,1:100,'c':11}

     字典的定义

    #空字典

    d1 = {}

    d2 = dict()

    #用map映射创建字典

    d3 = dict({'a':1,'a':2})

    #用关键字赋值

    d4 = dict('a' = 1,'b' = 2)  

    注:=左边的值为合法变量名,都会被转换成字符串形式的key

    #创建有多个key值采用fromkey

    d5 = {}.fromkey(可迭代对象,默认值)

      把可迭代对象分出来给字典当key,把默认值作为value赋值给他们,如果不设置默认值就把None赋值给他们

    字典的操作

    dic = {'a':1,'b':2}

    1、增:字典名[key] = value

      如果key存在就是修改,key不存在就是添加

      dic['c'] = 3

    2、改

      dic['a'] = 2

    3、查:字典名[key]  只能查找已有的key,没有的key会报错

      print(dic['b'])  -->2

    ###get()  dic.get(key,default)

      按key查找,如果是没有的key,就会返回默认值default(可以自己设置) 

    4、删

      1)pop   按key,不写报错  有返回值

      2)clear    清空列表

      3)popitem()   默认从末尾删除,并返还(key,value)的元组形式

    其他方法

    1、update()更新

    update更新,key有的话就覆盖,没有的话就添加

    2、setdefault()

    和get()实现有点相似括号里面可以加入key,default

    如果key存在  setdefault什么也不干

    如果key不存在     就把默认值赋值给key添加到列表里面,不写就把None赋值给key

    字典的循环

    1、直接循环,得到的就是key的循环

    2、循环key

      dic.key()

      for i in dic.key()

    3、循环value

      dic.value()

      for i in dic.value()

    4、循环key和value

      dic.items()

      for i in dic.items()

        print(i)  -->(key,value)

    重点:相当于解压赋值

      for i , j in dic.items:

        print(i,j)  -->key,value

    集合类型(set)

    #空集合:不能用{} ,因为用来表示空字典了

    s = set()

    #概念

    1、set为可变类型,所可以增加和删除

    2、set不能存重复数据   ,所以可以用来进行去重操作

    3、set为无序存储,所以不可以索引

    4、set为单列容器,所以没有key

    #所以set不能取值

    #增 (add、update)

      1)add()  直接把括号里添加到集合里

      2)update()  更新把括号里的集合添加进去,去重

    #删  (pop() ,remove() , clear())

      pop  随机删除,有返回值

      remove()  按ele删除  没有返回值

      clear()    清空

    #set运算

    #交集:两个都有 &

    #合集:两个的合体 |

    #对称交集:刨除共有的,其他剩下的合体   ^

    #差集  -  独有的   一个集合减去另一个集合和他共有的

    #比较:前提一定是包含关系

  • 相关阅读:
    spring——依赖注入
    jsp课程笔记(一)
    spring入门程序(一)
    关于java项目导入到eclipse无法访问的问题
    lnmp一键下载及安装
    spring配置文件application.Context配置文件的约束信息快速获取
    Tomcat下载与安装
    Nginx配置java项目在Tomcat下访问
    webstrom快捷键合集
    Ubuntu 开启SSH服务以及有关设置:安装,指定端口号、免密登录、远程拷贝
  • 原文地址:https://www.cnblogs.com/hesujian/p/10732978.html
Copyright © 2011-2022 走看看