前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中的list(), dict(), [], {}

Python中的list(), dict(), [], {}

作者头像
Tyan
发布2020-06-04 15:06:25
1.3K0
发布2020-06-04 15:06:25
举报
文章被收录于专栏:SnailTyanSnailTyan

文章作者:Tyan 博客:noahsnail.com | CSDN | 简书

0. 测试环境

Python 3.6.9

1. 引言

在Python中,listdict作为Python的基础数据结构,经常会用到,其定义形式通常有下面两种:

代码语言:javascript
复制
a = []
b = list()

c = {}
d = dict()

二者有什么区别呢?

2. list() vs []dict() vs {}

  • 运行时间

首先比较一下二者的运行时间,timeit模块主要用来测量Python小段代码的执行时间,默认执行100万次。代码如下:

代码语言:javascript
复制
>>> from timeit import timeit
>>> timeit('[]')
0.05389202758669853
>>> timeit('list()')
0.1250211838632822
>>> timeit('{}')
0.06583642773330212
>>> timeit('dict()')
0.1366278938949108
>>> type({})
<class 'dict'>

从时间上来看,明显[]{}的定义形式更快。

  • 数据类型转换
代码语言:javascript
复制
>>> a = (1, 2, 3)
>>> b = [a]
>>> c = list(a)
>>> b
[(1, 2, 3)]
>>> c
[1, 2, 3]
>>> s = 'abc'
>>> x = [s]
>>> y = list(s)
>>> x
['abc']
>>> y
['a', 'b', 'c']

从上面的代码可以看出,list()除了可以定义之外,还可以对将其它数据类型转换为list,而[]则没有数据类型转换的功能。

3. 为什么[]list()更快

dis库是Python自带的一个库,可以用来分析字节码,而字节码是CPython解释器的实现细节。[]list()的字节码对比如下:

代码语言:javascript
复制
>>> import dis
>>> dis.dis(lambda : [])
  1           0 BUILD_LIST               0
              2 RETURN_VALUE
>>> dis.dis(lambda : list())
  1           0 LOAD_GLOBAL              0 (list)
              2 CALL_FUNCTION            0
              4 RETURN_VALUE

从上面的代码可以看出,list()有符号查找和函数调用的开销,因此其速度更慢。

4. 总结

[]{}定义数据类型速度更快,list()dict()除了能定义数据类型之外,还可以对数据进行类型转换。

References

1.https://stackoverflow.com/questions/5790860/and-vs-list-and-dict-which-is-better

2.https://www.quora.com/In-Python-any-difference-between-using-and-list-or-between-and-dict

3.https://docs.python.org/zh-cn/3/library/timeit.html

4.https://docs.python.org/zh-cn/3/library/dis.html

5.https://stackoverflow.com/questions/30216000/why-is-faster-than-list

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 测试环境
  • 1. 引言
  • 2. list() vs [],dict() vs {}
  • 3. 为什么[]比list()更快
  • 4. 总结
  • References
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档