元组,列表,字典,集合比较内存大小
- set(),list(),tuple() 方法只接受一个值,这个值可以是列表或者是元组, 否则报错 TypeError: set expected at most 1 arguments, got 3
- dict() 方法接受相当于默认参数,key不用引号'',用=号相连
- sys.getsizeof() 比较中,发现占用内存从小到大依次是:元组,列表,集合,字典
In [123]: import sys
In [127]: a_dict = dict(a='a1',b='b1',c='c1')
In [128]: a_dict
Out[128]: {'a': 'a1', 'b': 'b1', 'c': 'c1'}
In [129]: a_set = set('a','b','c')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-129-2f7cc4a81ed4> in <module>()
----> 1 a_set = set('a','b','c')
TypeError: set expected at most 1 arguments, got 3
In [130]: a_set = set(('a','b','c'))
In [131]: a_set
Out[131]: {'a', 'b', 'c'}
In [132]: a_list = list('a1','a2','a3')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-132-3e099cee627d> in <module>()
----> 1 a_list = list('a1','a2','a3')
TypeError: list() takes at most 1 argument (3 given)
In [133]: a_list = list(('a1','a2','a3'))
In [134]: a_list
Out[134]: ['a1', 'a2', 'a3']
In [135]: a_list = tuple('a1','a2','a3')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-135-df0623f0640f> in <module>()
----> 1 a_list = tuple('a1','a2','a3')
TypeError: tuple() takes at most 1 argument (3 given)
In [136]: a_list = tuple(('a1','a2','a3'))
In [137]: a_list = list(('a1','a2','a3'))
In [138]: a_tuple = tuple(('a1','a2','a3'))
In [139]: a_tuple
Out[139]: ('a1', 'a2', 'a3')
In [140]: getsizeof(a_tuple),getsizeof(a_list),getsizeof(a_dict),getsizeof(a_set)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-140-e700af696dcc> in <module>()
----> 1 getsizeof(a_tuple),getsizeof(a_list),getsizeof(a_dict),getsizeof(a_set)
NameError: name 'getsizeof' is not defined
In [141]: sys.getsizeof(a_tuple),sys.getsizeof(a_list),sys.getsizeof(a_dict),sys.getsizeof(a_set)
Out[141]: (72, 112, 272, 224)
In [142]:
dict的用法:
>>>dict() # 创建空字典
{}
>>> dict(a='a', b='b', t='t') # 传入关键字
{'a': 'a', 'b': 'b', 't': 't'}
>>> dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
>>> dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
>>>
dict 的错误用法
In [142]: dict_2 = dict(1=11,2=12,3=13)
File "<ipython-input-142-7080a8571a4e>", line 1
dict_2 = dict(1=11,2=12,3=13)
SyntaxError: keyword can't be an expression
In [143]: dict_2 = dict(1='11',2='12',3='13')
File "<ipython-input-143-1703496c46f8>", line 1
dict_2 = dict(1='11',2='12',3='13')
SyntaxError: keyword can't be an expression
In [144]: a_dict = dict(a='a1',b='b1',c='c1')
In [145]: dict_2 = dict('1'=11,'2'=12,'3'=13)
File "<ipython-input-145-55327d34ed6c>", line 1
dict_2 = dict('1'=11,'2'=12,'3'=13)
SyntaxError: keyword can't be an expression
In [147]: dict_2 = dict(a1=11,a2=12,a3=13)
In [149]: dict_2
Out[149]: {'a1': 11, 'a2': 12, 'a3': 13}
In [150]:
但是速度方面恰好相反: tuple < list < set < dict 数量多这样考虑才有意义,否则没意义
In [172]: a_set = set(('a','b','c'))
In [173]: a_list = list(('a1','a2','a3'))
In [174]: a_tuple = tuple(('a1','a2','a3'))
In [175]: a_dict
Out[175]: {'a': 'a1', 'b': 'b1', 'c': 'c1'}
In [176]: timeit 'a' in a_tuple
The slowest run took 27.16 times longer than the fastest. This could mean that an intermediate result is being cached.
10000000 loops, best of 3: 55.3 ns per loop
In [177]: timeit 'a' in a_list
10000000 loops, best of 3: 53.7 ns per loop
In [178]: timeit 'a' in a_set
10000000 loops, best of 3: 33.1 ns per loop
In [179]: timeit 'a' in a_dict
10000000 loops, best of 3: 36 ns per loop
写入自己的博客中才能记得长久
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!