• 5.14 每日小三练


    一行代码实现删除列表中重复的值 ?

    a = [1,2,3,5,6,9,8,2,4,5,2,3]
    b = {}
    b = b.fromkeys(a)
    c = list(b.keys())
    print('去重后为:',c)

    Python是如何进行内存管理的? Python的程序会内存泄漏吗?说说有没有什么方面阻止或检测内存泄漏

    Python是如何进行内存管理的:1>引用计数:每个对象中都有ob-refcnt来做引用计数,当一个对象增加,ob-refcnt就会增加;反之减少,从而也释放一定空间;

                                                       2>标记清除:解决循环引用的问题。先按需分配,等到没有空闲内存的时候,从寄存器和程序栈上的引用出发,遍历所有对象和引用把所有能访问的打标记,最后将没有标记的对象释放掉;

                                                       3>分代技术:提高效率,提高垃圾回收的效率,按照存活时间,分成不同的集合。将内存块按照其存活时间划分为不同的集合

    Python的程序会内存泄漏吗:Python也会内存泄露,Python本身的垃圾回收机制无法回收重写了del的循环引用的对象;

    说说有没有什么方面阻止或检测内存泄漏:1>程序员管理好每个python对象的引用,尽量在不需要使用对象的时候,断开所有引用

                                                                         2>尽量少通过循环引用组织数据,可以改用weakref做弱引用或者用id之类的句柄访问对象

                                                                         3>通过gc模块的接口可以检查出每次垃圾回收有哪些对象不能自动处理,再逐个逐个处理

    哈希冲突回避算法有哪几种, 分别有什么特点?

    开放定址法:就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入 ,公式为:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1) ;

    再哈希法:有多个不同的Hash函数,当发生冲突时,使用第二个,第三个,….,等哈希函数计算地址,直到无冲突。虽然不易发生聚集,但是增加了计算时间;

    链地址法:每个哈希表节点都有一个next指针,多个哈希表节点可以用next指针构成一个单向链表,被分配到同一个索引上的多个节点可以用这个单向 ;

    立公共溢出区:这种方法的基本思想是:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表。

  • 相关阅读:
    day14
    day13
    装饰器小题
    day12
    tes..
    1380 没有上司的舞会
    算法模板——KMP字符串匹配
    算法模板——Tarjan强连通分量
    3211: 花神游历各国
    1131: [POI2008]Sta
  • 原文地址:https://www.cnblogs.com/ljy123/p/12892375.html
Copyright © 2020-2023  润新知