list:
list是一种有序的集合,可以随时添加和删除其中的元素。
list的索引从0 开始,最后一个元素索引为len(list)-1,也可以用list(-1)直接访问最后一个元素。当索引超出范围,会报错:IndexError。
操作:
末尾添加元素:list.append(num)
在索引号为i的位置添加元素:list.insert(i,num)
删除list末尾的元素:list.pop();删除指定位置的元素:list.pop(i)
修改索引号为i的未知的元素:list[i]=num
list中可以保存不同类型的元素:
L = ['Apple', 123, True,['lili','anna']]
tuple:
有序列表。与list非常相似,tuple一旦初始化就不能修改(tuple中每个元素的指向不能修改)。
tuple没有append/insert/pop等方法。
定义空tuple:tuple=()
定义仅有一个元素的tuple:tuple=(3,) tuple中仅有元素3
访问tuple中索引号为i的元素:tuple[i]
tuple可变的情况:将list作为tuple的元素
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
dict:
键值对的方式存储,dict内部存放的顺序和key放入的顺序是没有关系的:
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
判断key是否存在于字典中: key in dict ==>True/False
dict.get(key,num)==>如果key存在,返回其value;如果key不存在,返回num,默认的num=None
删除key:d.pop(key) 连同value一起删除
dict的key为不可变对象,由于dict要根据key计算value的存储位置,如果每次计算相同的key得出的结果不同,dict就完全混乱了。为了保证哈希算法的正确性,key不可以变。
dict的特点:
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。需要两个list分别存储key和value,hash函数对key值进行运算后,得到一个对应于列表的下标值,分别对应两个表中的key和value.
set:
一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
set的创建:s=set([1,2,3])。通过传入一个list来构建set,list中的重复元素会被自动过滤。
set中添加元素:set.add(key)
set中删除元素:set.remove(key)
set中的元素必须为不可变对象。因为无法判断两个可变对象是否相等,就无法保证set中无重复对象。