zoukankan      html  css  js  c++  java
  • python的dict和set

    dict

    dict是dictionary的缩写,python内置了字典,在其他语言中也称为map,使用键值对储存,具有极快的查找速度。
    如果是只用list来实现,就需要两个list,先在第一个list中查找,找到之后再到另一个list中查找,显然这样速度很慢。而且list达到很长,耗时就很长很长。。。

    names = ['Michael', 'Bob', 'Tracy']
    scores = [95, 75, 85]
    

    因为一个key只对应一个value,如果多次针对一个key赋值,那么前面的key的value就会被覆盖。
    还有如果key不存在,就会报错,所以我们需要提前检查key是否存在。
    删除一个key:使用pop(key)方法,相对应的value也会被删除。

    dict可以用在需要告诉查找的很多地方,牢记的是,dict 的key必须是不可变对象,即string,tuple,numbers。
    dict查找实际是用的哈希算法。

    set

    set是一组key的集合,但是不存储value。由于key不能重复,所以,在set中,没有重复的key。

    创建一个set

    必须传入一个list作为输入集合

    s = set([1,2,3]);
    s//{1,2,3}
    

    set接收一个参数,就是list或tuple或者其他可迭代对象

    L = [x,y,z];
    s = set(L);
    

    但是L中的元素x,y,z有任何一个可变就会报错。

    添加元素

    可以重复添加,但是不会有效果

    s.add(4);
    

    删除元素

    s.remove(4);
    

    set可以看做是数学意义上的无序和无重复元素的集合,所以两个set可以做&(交集)和|(并集)运算。
    set和dict唯一区别在于set没有存储对应的alue,set的原理和dict一样,同样不可以放入可变对象

    python内部传值

    先贴一段代码

    # 对list进行测试
    list0 = [1,2,"tt",["ryr","hr"]];
    list1 = list0;
    list1[0] = 11;
    list1[1] = 22;
    list1[3][0] = "aa";
    list1[3][1] = "bb";
    
    # //对数字和字符串还有tuple进行测试
    a = "yrr";
    b = a;
    b = "rer";
    c = ("gr",12,["grr",45]);
    d = c;
    d = ("grgr",22,["grr",455]);
    # c[0] = "grggr";
    # c[1] = 22;
    c[2][0] = "ggrgr";
    c[2][1] = "help";
    print(c);
    print(d);
    print(a);
    print(b);
    print(list0);
    print(list1);
    


    在python中,string,tuples,numbers是不可更改的对象,而list,dict则是可以修改的对象,我理解的修改和不可修改,是指是否能在本身上进行修改。

    nfoo = 1
    nfoo = 2
    
    lstFoo = [1]
    lstFoo[0] = 2
    

    修改:虽然string,tuples,numbers可以进行修改,但是修改之后,原来内存中的那个numbers就不存在了,就被"抛弃"了,内存中又重新创建一块区域来存储另一个值。
    但是对于list和tuples而言,修改的仅仅是内容改变,原来的那块内存并没有被丢弃,也没有创建新的内存。

  • 相关阅读:
    202002知识点
    爬取思想流程
    测试
    运维
    设计模式重温
    ?March2020疑问点
    最方便简洁的设置Sublime编辑预览MarkDown
    rime中州韵输入法安装及配置
    Deepin更新Sublime并取消更新提示
    关于在线教学软件一些发现和思考
  • 原文地址:https://www.cnblogs.com/sminocence/p/7896532.html
Copyright © 2011-2022 走看看