容器篇
变量这种存储单个数据的容器,也会提供光存储多个数据容器
– 线性容器:具备顺序
数组(Array):连续内存
链表(List):Python list的容器,底层使用的就是双向链表结构
栈(Stack):先进后出
队列(Queue):先进先出
hash表:
list:
**列表:**是一种线性结构的容器,底层使用的是双向链表结构设计
定义一个 list 容器:
利用若数据类型语言的特点,直接将[]这种列表数据赋给变量,则变量就是list类型
ls = [1, 2, 3, 3, 23]
也可以使用全局函数 list
ls = list()
ls = list([1, 2, 3, 4, 5])
访问列表中的元素:
因为list是有序的线性结构,因此每一个都是存在下标(索引)的,所以可以直接通过下标来访问列表对象[下标] # 获取变量对应的元素
⏰ 注意:下标从0开始
得到list中的元素个数:
len(列表对象) # 返回对象的元素个数
列表的遍历:
for 临时变量 in 容器:
每一次循环得到一个元素,被保存到临时变量中
也可以使用while,通过索引获取
list列表的常见方法:
dir(模块/对象) # dir全局函数可以打印输出模块或者对象的方法或者属性
help(方法) # 返回帮助文档
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
- append(新元素) # 在尾部添加新元素
- insert(index, 新元素) # 在index位置添加新元素
- extend(列表) # 合并列表
- clear() # 清空列表
- pop() # 删除最后一个元素
- remove(元素) # 删除对应的元素
- index(元素) # 返回元素的下标索引
- count(元素) # 统计某个元素在列表中的数量
- reverse() # 反转列表
- sort() # 数据的类型必须相同 sort(*, key=None, reverse=False)
- copy() # 复制list对象
set(集合):
set是一种无序的集合,是一种hash表(哈希表)的实现,所以具备如下特点:
1、无序
2、不重复
定义一个set:
s = {必须有元素} # 注意:不要使用空的{},这样定义的是字典
s = set()
s = set([1, 2, 3, 4])
# 相当于将list转化成了set
常见方法
[ 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
- add(新元素)
- discard() # 如果元素存在,移除元素
- pop() # 随机移除一个元素
- union() # 并集
- intersection() # 交集
- difference() # 差集
tuple(元组):
不可变数据类型,类似于其他编程语言的枚举类型
代表一组固定不变的
定义一个tuple:
season = ("春", "夏", "秋", "冬")
常见方法:
- index(元素) # 返回元素的下标索引
- count(元素) # 统计某个元素在列表中的数量
元组只有一个元素默认类型为该元素类型
强制设置只有一个元素的元组类型为元组,则在元素后,加逗号即可
dict(字典):
定义一个tuple:
d = {"name": "tom", "age": 16}
>>> d = {"name": "tom", "age": 16}
>>> d.get("name")
'tom'
>>> d.get("age")
16
>>> d.keys()
dict_keys(['name', 'age'])
>>> d.values()
dict_values(['tom', 16])
>>> d["address"] = "Chongqing" # 增加键值对
常见方法:
['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
- get(键) # 获取键对应的值
- keys() # 获取字典里所有的键
- values() # 获取字典里所有的值
- items() # 获取字典里所有的键值对
- pop(键) # 删除键值对
- popitem() # (LIFO)倒着删除
字典遍历:
d = {"name": "tom", "age": 16}
for i in d:
print(k) # 打印键
for j in d:
print(j, d[j]) # 打印键值
for k in d.keys():
print(k, d[k]) # 打印键值
for (key, value) in d.items():
print(key, value)
for res in d.items():
print(res[0], res[1]) #res[0]:键 res[1]:值