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而言,修改的仅仅是内容改变,原来的那块内存并没有被丢弃,也没有创建新的内存。

  • 相关阅读:
    程序员的7中武器
    需要强化的知识
    微软中国联合小i推出MSN群Beta 不需任何插件
    XML Notepad 2006 v2.0
    Sandcastle August 2006 Community Technology Preview
    [推荐] TechNet 广播 SQL Server 2000完结篇
    《太空帝国 4》(Space Empires IV)以及 xxMod 英文版 中文版 TDM Mod 英文版 中文版
    IronPython 1.0 RC2 更新 1.0.60816
    Microsoft .NET Framework 3.0 RC1
    《Oracle Developer Suite 10g》(Oracle Developer Suite 10g)V10.1.2.0.2
  • 原文地址:https://www.cnblogs.com/sminocence/p/7896532.html
Copyright © 2011-2022 走看看