V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhoudaiyu
V2EX  ›  程序员

前段时间脑子抽了要给部门内部的同事做技术分享,主题是 Data Structures in Python ,大家觉得讲点啥好?

  •  
  •   zhoudaiyu · 2021-03-06 17:44:20 +08:00 via iPhone · 2809 次点击
    这是一个创建于 1364 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我觉得这个主题可以理解成 Python 中的数据结构,也可以理解成数据结构——用 Python 实现。如果按第一种讲呢,就是讲讲 Python 的内置数据结构,再加 collections 包里面的几个数据结构我觉得就行了(其实我想讲内置数据结构在 Python 源码中的实现,但能力不足时间也不够了,🐶);如果按第二种讲呢,打算讲讲跳表和优先队列,重点是数据结构,只是用 Python 实现的。大家有啥想法?不按照我说的这两种讲只要切合主题就没问题。PS:下下周就要讲,我还没做任何准备,只是想了想内容

    22 条回复    2021-03-08 08:11:45 +08:00
    wangxn
        1
    wangxn  
       2021-03-06 18:01:30 +08:00
    说实话,我是从这里第一次真正知道跳表这个数据结构,教科书中貌似都是着重说 B/B+树。
    个人感觉这个主题不够吸引人,第一种基本就是介绍文档了;第二种就像让大家再上一次《数据结构》……
    zhoudaiyu
        2
    zhoudaiyu  
    OP
       2021-03-06 18:04:45 +08:00 via iPhone
    @wangxn 当时就想装个 B 讲点复杂的数据结构🐶,后来活太多也没时间准备了,只能找点简单的讲讲了
    renmu123
        3
    renmu123  
       2021-03-06 18:15:48 +08:00 via Android
    不建议将跳表这种基本用不到的东西,不如好好讲一下大家都用得到哈希表的原理以及实现,或者各种链表结构,或者哈夫曼编码以及应用,但是听起来这个主题就很无聊。
    wangxn
        4
    wangxn  
       2021-03-06 18:22:06 +08:00   ❤️ 1
    感觉可以穿插点最佳实践之类的内容,比如怎样高效遍历( itertools 模块),怎样用函数式编程的风格来操作它们,怎样定义节点以更好地节省内存,是否可能出现循环引用,是否会出现“内存泄漏”之类的内容。
    zhoudaiyu
        5
    zhoudaiyu  
    OP
       2021-03-06 18:54:32 +08:00 via iPhone
    @renmu123 其实,这个技术分享就有点让大家讲点难一点的东西,不过老哥说的这个哈希表确实很重要,考虑把跳表换成这个
    zhoudaiyu
        6
    zhoudaiyu  
    OP
       2021-03-06 18:55:22 +08:00 via iPhone
    @wangxn 有道理啊 我咋就没想到这些 😳
    MoYi123
        7
    MoYi123  
       2021-03-06 18:57:53 +08:00
    from functools import lru_cache 里的链表的实现可以一讲,用了一个比较少见的 python 写法。

    root = [] # root of the circular doubly linked list
    root[:] = [root, root, None, None] # initialize by pointing to self
    zhoudaiyu
        8
    zhoudaiyu  
    OP
       2021-03-06 19:07:58 +08:00 via iPhone
    @MoYi123 我怀疑你能看到我的发帖记录 但是没证据

    https://www.v2ex.com/t/758444
    darknoll
        9
    darknoll  
       2021-03-06 19:35:37 +08:00 via Android
    又不是着急去面试,这玩意谁会听啊,整些实用的不好吗?
    zhoudaiyu
        10
    zhoudaiyu  
    OP
       2021-03-06 19:37:12 +08:00 via iPhone
    @darknoll 大家讲的都这样,都讲什么架构,我觉得我这个挺实际的了
    lambdafate
        11
    lambdafate  
       2021-03-06 20:22:13 +08:00
    不建议讲跳表。可以讲讲并查集,线段树等高级一点的数据结构,然后再从 LeetCode 找几道例题当场 AC
    heyjei
        12
    heyjei  
       2021-03-06 20:32:00 +08:00
    当然是第一种,能够把 Python 的内置数据结构讲透也是一件不容易的事,特别是一些使用上的代码陷阱。
    MicroBotter
        13
    MicroBotter  
       2021-03-06 20:50:08 +08:00
    你是不是在 SUSE 工作呀?
    zhoudaiyu
        14
    zhoudaiyu  
    OP
       2021-03-06 20:52:23 +08:00 via iPhone
    @MicroBotter 真高看我😂为啥你会认为我在 SUSE
    zhoudaiyu
        15
    zhoudaiyu  
    OP
       2021-03-06 20:53:54 +08:00 via iPhone
    @lambdafate 跳表不太高级是嘛😂我就看 redis 用了跳表
    MicroBotter
        16
    MicroBotter  
       2021-03-06 20:55:09 +08:00
    @zhoudaiyu 因为有个人和你用差不多的头像、语气、和名字,都是什么 Zhou 。。。。github.com/AlynxZhou
    zhoudaiyu
        17
    zhoudaiyu  
    OP
       2021-03-06 20:56:34 +08:00 via iPhone
    @MicroBotter 😨我可够不上 SUSE
    zhoudaiyu
        18
    zhoudaiyu  
    OP
       2021-03-06 20:59:01 +08:00 via iPhone
    @zhoudaiyu 他居然也牙疼 太巧了 8
    calmzhu
        19
    calmzhu  
       2021-03-06 21:02:36 +08:00
    不如
    讲下脑子怎么抽的?
    zhoudaiyu
        20
    zhoudaiyu  
    OP
       2021-03-06 21:19:02 +08:00 via iPhone
    @calmzhu 领导使了一诈,说所有人都得讲,先确定讲什么的,就把坑占了,后续的就不能再讲这个了,但是后来有好多人就没搭理他,也就不用讲了...
    Samuelcc
        21
    Samuelcc  
       2021-03-07 20:09:08 +08:00 via Android   ❤️ 1
    这个题目有点大啊 挺难的
    技术分享个人觉得要讲得深,打破砂锅一层层讲,而且得百问不倒,简单地归纳一些网上的资料没什么实际意义
    helloworld2076
        22
    helloworld2076  
       2021-03-08 08:11:45 +08:00 via iPhone
    @zhoudaiyu
    zhou,世界上的另一个我
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:50 · PVG 06:50 · LAX 14:50 · JFK 17:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.