容器
什么是容器?
容器就是一种数据类型,复合数据,可存储多个变量
容器对象都是存储在堆中的
list 列表
线性表的实现:数组(array)、链表(list)、栈(stack)、队列(queue)
python中没有数组
列表
列表的定义
1、借助若数据类型语言的特点:直接赋值
ls = [1, 2, 3]
type(ls) # list
2、全局函数list
ls = list() # 使用全局函数完成
ls = list([1, 3,4,5,5])
列表的元素
|-- element 容器的存储的值
列表中元素如何访问或者修改?
可以利用下标来访问元素或者修改元素
ls[小标] 小标从0开始
ls[2] # 访问下标为2的也就是第三个值
ls[3] = 200 # 将第四个值修改为200
|-- 获取list中元素的个数
len的全局函数
len(ls) # 获取元素的个数
列表的遍历
for循环
>>> for i in [1,2]:
... print(i)
...
1
2
while循环,需要一个索引,从0开始
****:
[‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’,
‘pop’, ‘remove’, ‘reverse’, ‘sort’]
|-- append(元素) # 将元素追加到list的末尾位置
|-- clear() # 清空列表
|-- copy() # 复制对象(浅拷贝对象)
|-- count() # 统计元素在列表中出现的次数
|-- extend() # 将一个列表合并到另外一个列表中
|-- index() # 查找元素在列表中的第一个索引位置,如果不存在,则抛出异常
|-- insert(index, item) # 插入元素,第一个参数是位置
|-- pop([index]) # 根据索引移除元素,如果没有索引,默认移除最后一个
|-- remove(元素) # 根据值移除元素
|-- reverse # 翻转元素的顺序
|-- sort # 排序,只能同类型比较 如果值字符串,是按照ASCII表比较的
集合
Set:无序的、不能重复的 hash算法
定义集合
s = {必须有元素}
s = set() # 全局函数
注意:set无序,所以没有下标
常见方法:
add’, ‘clear’, ‘copy’, ‘difference’, ‘difference_update’, ‘discard’,
‘intersection’, ‘intersection_update’, ‘isdisjoint’, ‘issubset’, ‘issuperset’,
‘pop’, ‘remove’, ‘symmetric_difference’, ‘symmetric_difference_update’, ‘union’,
‘update’
|-- add # 添加元素
|-- clear
|-- copy
|-- pop # 随机移除元素
|-- remove #
|-- discard # 尝试着移除元素
|-- intersection 交集
|-- difference 差集
|-- union 并集
元组
元组由()包裹,特点是固定,不能发生变化的,是不可变类型,有序的
定义
t = (1,3,4,45,5)
tt = tuple((1,3,4,45,5))
通过下标访问元素
|-- count()
|-- index()
注意:元组是不可变类型,也就意味着一点元组创建,元素的个数、值都将固定,不能修改、删除等操作
如果子元素是可变类型,那就可以改变着个子元素。
字典:
字典是一种键(key)值(value)对形式存储的数据结构
键(key)是唯一的,在python中键(key)只能字符串类型
定义:
d = {“name”: “name”, “age”: 16, “address”: “xian” }
dict({“name”: “name”, “age”: 16, “address”: “xian” })
访问值,通过key来访问value
d["name"]
常见方法:
‘clear’, ‘copy’, ‘fromkeys’, ‘get’, ‘items’, ‘keys’, ‘pop’,
‘popitem’, ‘setdefault’, ‘update’, ‘values’
|-- clear
|-- copy
|-- get
|-- keys()
|-- values()
|-- items()
|-- pop(key) # 通过key,移除对应的键值对
|-- popitem # LIFO的顺序
LIFO:last in first out
FIFO:firt in first out