Ott*_*ger 30
您可以使用元组作为字典中的键并将元组插入集合中:
>>> {}[tuple()] = 1
>>> {}[list()] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)
这基本上是一个tuple可以清洗的结果而一个list不是:
>>> hash(list())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> hash(tuple())
3527539
Run Code Online (Sandbox Code Playgroud)
mgi*_*son 13
@Otto的答案非常好.我唯一需要补充的是,当你打开第三方扩展时,你真的需要查阅文档.某些函数/方法可能需要一种或另一种数据类型(或根据您使用的数据类型而具有不同的结果).一个例子是使用元组/列表来索引numpy数组:
import numpy as np
a=np.arange(50)
a[[1,4,8]] #array([1, 4, 8])
a[(1,4,8)] #IndexError
Run Code Online (Sandbox Code Playgroud)
编辑
此外,快速计时测试表明,元组创建比列表创建快得多:
import timeit
t=timeit.timeit('[1,2,3]',number=10000000)
print (t)
t=timeit.timeit('(1,2,3)',number=10000000)
print (t)
Run Code Online (Sandbox Code Playgroud)
这是很好的记住.换句话说,做:
for num in (8, 15, 200):
pass
Run Code Online (Sandbox Code Playgroud)
代替:
for num in [8, 15, 200]:
pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
549 次 |
| 最近记录: |