【问题标题】:Declaring a new list/set/dict in python在 python 中声明一个新的列表/集合/字典
【发布时间】:2023-01-12 03:04:26
【问题描述】:

我想知道这两种表示法之间是否有任何区别(性能、速度……): new_list = [] new_list = list()

或者它是开发人员/团队的偏好,甚至是对语言的推荐? 集合和字典呢?

【问题讨论】:

    标签: python python-3.x list dictionary set


    【解决方案1】:

    有一些差异,例如:

    list(('x','y'))
    #['x', 'y']
    
    [('x','y')]
    #[('x', 'y')]
    
    list(set('x'))
    #['x']
    
    [set('x')]
    #[{'x'}]
    

    list() 是一个函数调用,而 [] 是一个文字。

    此外,还有一个名为 dis dis doc 的模块:

    dis模块支持对CPython字节码进行反汇编分析。该模块作为输入的 CPython 字节码在文件 Include/opcode.h 中定义,并由编译器和解释器使用。

    要显示 lambda: list()lambda: [] 的反汇编,请参见以下内容:

    import dis
    print(dis.dis(lambda: list()))
    #output
     1           0 LOAD_GLOBAL              0 (list)
                  2 CALL_FUNCTION            0
                  4 RETURN_VALUE
    
    print(dis.dis(lambda: []))
    #output
    1           0 BUILD_LIST               0
                  2 RETURN_VALUE
    

    此外,list 是一个全局名称,可以在运行时被覆盖,因此它是强烈建议不要使用 list 作为您的变量名. 因为您不想覆盖内置的list

    【讨论】:

    • 也许通过解释 dis 模块在提供的示例中正在做什么以及如何解释字节码来改进(体面的)答案。
    猜你喜欢
    • 2015-06-03
    • 1970-01-01
    • 2021-04-23
    • 2011-05-04
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    相关资源
    最近更新 更多