pop 按照 索引 删
remove 按照 元素 删
列表 可变
元组 不可变,切片是一种读操作。与 元组 相关的操作比 列表 少很多。
元组下的列表内的东西是可以改变的,元组下的列表作为一个整体是不可改变的。
元组 列表在应用中的区别?
身份比较,类型比较,值比较
x=1
y=1
x is y #x与y是同一个对象,is比较的是id,即身份
type(x) is type(y) #对象的类型本身也是一个对象,所以可以用is比较两个对象的类型的身份
x == y #==比较的是两个对象的值是否相等
列表 list
特性:
1.可存放多个值
2.可修改指定索引位置对应的值,可变
3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序。
a.pop()
默认移除最后一个。 pop本身就是出栈的意思。
元组 tuple
定义:与列表类似,只不过[]改成()
特性:
1.可存放多个值
2.不可变 key不可变,value值可变。 迭代器
3.按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序
元组的常用操作,索引,切片,循环,长度,包含。 均是读操作,并不涉及到更改。
字典
定义:{key1:value1,key2:value2},key-value结构,key必须可hash
特性:
1.可存放多个值
2.可修改指定key对应的值,可变
3.无序
字典的存储结构是哈希表, 这样字典的查找性能就会很好(前提是处理好碰撞), 所以字典的key必须是可哈希的
什么是可哈希的(hashable)不该改变的(imutable)?
如果一个对象在自己的生命周期中有一哈希值(hash value)是不可改变的,那么它就是可哈希的(hashable)的,因为这些数据结构内置了哈希值,每个可哈希的对象都内置了__hash__方法,所以可哈希的对象可以通过哈希值进行对比,也可以作为字典的键值和作为set函数的参数。所有python中所有不可改变的的对象(imutable objects)都是可哈希的,比如字符串,元组,也就是说可改变的容器如字典,列表不可哈希(unhashable)。我们用户所定义的类的实例对象默认是可哈希的(hashable),它们都是唯一的,而hash值也就是它们的id()。