容器主要有:列表、集合、字典等
1、集合
- 集合中的元素不以特定顺序存储,也不能通过位置访问,与数学中集合的定义类似,集合操作比列表操作要快
- 创建和使用集合:直接指定初始化,也可以用set函数将序列转换为集合
cast = {"Luigi", "Gumbys", "Spiny"} #创建集合使用大括号,创建列表使用中括号,创建元组使用小括号
- 不能使用{}创建空集合,使用没有参数的set函数来创建
- 获取长度:len函数
- 判断集合中是否存在某个元素:if "Luigi" in cast :语句\
- 访问:不能使用下表运算符来访问集合的元素,直接用for循环来遍历,但是顺序是不确定的
for character in cast :
print(character)
- 排序:使用sorted函数可以将集合返回一个元素按序排好的列表
- 增加和删除元素:使用add方法添加元素,但是集合中不能添加重复的元素;使用discard方法删除已经存在在集合中的元素,若该元素不存在不会有效果;使用remove方法会删除已经存在的元素,若元素不存在会抛出异常;使用clear方法删除集合中的所有元素
- 子集:使用issubset方法判断一个集合是否是另一个集合的子集
if canadian.issubset(british) :
print("canadian是britisn的一个子集")
也可以使用==和=!来测试两个集合的相等性
- 并集、交集和差集:使用union方法返回一个新的集合,是两个集合的并集;使用intersection方法得到两个集合的交集;使用difference方法返回两个集合的差集,有顺序关系,是前者减去后者
- 不能创建包含集合的集合,无法对一个可变的值进行哈希,但是可以对元组进行哈希
2、字典
- 定义:字典是在键和值之间保持关联的容器,字典中的每个键有个关联的值,键是唯一的,但是一个值可能会被关联到多个键上。优点类似函数的定义 ,可以类比键是函数中的自变量,值是函数中的因变量
- 创建字典:使用大括号,空的大括号表示空的字典,而不是集合,使用dict函数可以创建一个字典的副本
contacts = {"Fred" : 7235591, "Mary" : 3841212, "Bob" : 3841212, "Sarah" : 2213278}
- 下标运算符用来返回一个键对应的值,虽然可以用下标运算符来访问字典但是字典不是顺序类型的容器;提供给下标运算符的键必须是合法的键,否则会抛出KeyError异常,in运算符来判断一个键是否在字典中
- 增加和修改项:字典属于可变容器,使用下标运算符为字典添加新的项;使用pop方法,将键作为参数,可以删除整个项
- 遍历字典的键:使用for循环遍历字典中独立的键,但是顺序是按照哈希的顺序排序的并非初始顺序
for key in contacts :
print(key) #会输出每一个键
- 遍历字典的键值对:使用类似数组的方法,将键当做是下标
- 遍历字典的值:使用value方法
phonenumbers = []
for number in contacts.values() :
phonenumbers.append(number)
使用list方法可以创建一个新的列表
- items方法:使用items方法可以返回包含项的键和值的元组,第一个位置上是项的键,第二个位置上是项的值,元组可以用下标运算符访问,元组使用小括号表示
3、复杂结构
- 包含集合的字典:每一个键对应一个集合,这个集合作为这个键的值,整体上看是一对多,使用集合可以避免重复
- 包含列表的字典:每一个键对应一个列表,列表允许重复
- 大型Python程序:包含一个驱动模块和一个或多个补充模块