六、数据容器
1.list列表
[元素1,元素2,元素n…]
元素的数据类型没有要求,容纳数量最多为2^63-1个,可修改,支持重复且有序
代码 | 作用 |
---|---|
列表.index(元素) | 查找元素在列表中的下标(正向索引,若不存在则报错ValueError) |
列表[下标]=修改值 | 将列表指定下标修改为新值 |
列表.append(新元素) | 在列表尾部追加一个元素,一次只能追加一个元素 |
列表.extend(新列表) | 将新列表追加到原列表尾部,与+=效果相同 |
列表.insert(位置下标,新元素) | 在原列表指定下标插入新元素(插入位置如果超过列表尾端则追加到原列表尾端) |
del 列表[下标] | 删除列表中指定下标的元素,相当于撕掉元素被变量赋予的标签 |
列表.pop(下标) | 将列表指定下标的元素取出并返回,可赋值给新的变量 |
列表.remove(指定元素) | 通过指定元素的内容,从前向后删除列表中出现的第一个指定元素 |
列表.clear() | 清空整个列表 |
列表.copy() | 复制列表 |
新列表=原列表[:] | 复制列表,使用切片方法 |
新列表=list(原列表) | 复制列表,使用list函数 |
列表.count(元素) | 统计元素在列表中出现的次数 |
len(列表) | 统计列表总共元素数量 |
列表.sort(key=选择排序依据的函数(可使用lambda匿名函数), reserve=True) | 可以通过参数reserve=True表示降序,会改变原列表内容 |
sorted(列表) | 对列表中元素排序,默认升序,不改变列表内容,会产生新的列表 |
列表[起始,结束,步长] | 切片操作 |
遍历列表:
# while循环遍历列表
i = 0
while i < len(name):
a = name[i]
print(a)
i+=1
# for循环遍历列表
for a in name:
print(a)
2.tuple元组
特点:支持元素重复且有序,元素类型不受限,但是元组的元素不可修改,若元组中的元素是列表则可以修改列表内的元素。
定义元组:(元素1,元素2,元素3,……)
代码 | 作用 |
---|---|
tuple() | 定义元组 |
() | 定义空元组 |
(元素,) | 定义单个元素的元组一定要在元素后加一个逗号 |
元组.count(元素) | 统计元素在元组中出现的总次数 |
元组.index(元素) | 查找元素在元组中第一次出现的下标(正向索引,若不存在则报错ValueError) |
len(元组) | 统计元组中元素总数 |
元组[起始:结束:步长] | 切片操作 |
循环遍历与列表使用的方法相同
元组解包:将元组中各个元素赋值给不同的变量
a, b, c, d = t
print(a)
print(b)
print(c)
print(d)
3.序列
指内容连续、有序、可以使用下标索引的一类数据 容器,比如列表、元组、字符串等。
切片操作本质上不改变原序列,而是产生了一个新的序列。
起始、结束(不含,不包含结束本身)、步长都可以省略
4.集合
可变集合与不可变集合。
集合中元素不允许重复(会自动去重),且内容无序,故不支持下标索引访问,但是允许修改。
{元素1,元素2,元素3,……}
可变集合=set()创建空集合
不可变集合=frozenset()创建空集合
对于可变集合有:
代码 | 作用 |
---|---|
集合.add(元素) | 将指定元素添加到集合内 |
集合.remove(元素) | 移除指定元素 |
集合.pop() | 随机移除一个元素,可使用变量接收取出元素 |
集合.clear() | 清空集合 |
集合1.difference(集合2) | 取出集合1中集合2的差集(集合1有集合2没有),得到一个新的集合 |
集合1.difference_update(集合2) | 在集合1内删除和集合2相同的元素,集合1发生变化,集合2不变 |
集合1.union(集合2) | 将集合1与集合2取并集,得到新集合,集合1和2不变 |
集合1|集合2 | 将集合1与集合2取并集,得到新集合,集合1和2不变 |
集合1.intersection(集合2) | 将集合1与集合2取交集,得到新集合,集合1和2不变 |
集合1&集合2 | 将集合1与集合2取交集,得到新集合,集合1和2不变 |
len(集合) | 统计集合元素总数 |
不能使用while循环遍历,只能通过for循环遍历
5.dict字典
定义:{key1:value,key2:value,……}
定义空字典:字典={}
字典=dict()
一个元素包含一个键值对,元素在字典中没有严格的顺序关系。
但键必须用不可变数据类型,比如数字、字符串、元组等,并且不允许重复;值可以是任意类型的,并且可以重复。
代码 | 作用 |
---|---|
字典[键] | 提取键对应值,提取前使用”键 in 字典“语句检查键值是否在字典中 |
字典.get(键,替代值) | 若键值不存在,函数返回传入的替代值,此处替代值可以如:not in this dict!提示,若省略传入替代值,则返回None |
字典[key]=value | 字典新增元素/修改元素 |
字典.pop[key] | 获得指定key的value,同时字典被修改,指定key的元素被删除 |
字典.clear() | 清空字典 |
字典.keys() | 得到字典中全部key |
字典.values() | 得到字典中全部value |
字典.items() | 得到字典中全部键值对 |
len(字典) | 统计字典中键值对总数量 |
遍历方法:
# 方法1:通过获取全部的key
my_dict = {"1":11,"2":22,"3":33,"4":44}
keys = my_dict.keys()
for key in keys:
print(f"key is:{key}")
print(f"value is:{my_dict[key]}")
# 方法2:直接获取字典的键值
for key in my_dict:
print(f"key is:{key}")
print(f"value is:{my_dict[key]}")
# 例如:
info_dict = {
"wang":{"section": "techonlogy", "salary": 3000, "class": 1},
"zhou":{"section": "market", "salary": 5000, "class": 2},
"lin": {"section": "market", "salary": 7000, "class": 3},
"zhang": {"section": "techonlogy", "salary": 4000, "class": 1},
"liu": {"section": "market", "salary": 6000, "class": 2},
}
for key1 in info_dict:
if info_dict[key1]["class"] == 1:
info_dict[key1]["class"] += 1
info_dict[key1]["salary"] += 1000
print(info_dict)
总结
类别 | 列表 | 元组 | 字符串 | 集合 | 字典 |
---|---|---|---|---|---|
元素数量 | 多个 | 多个 | 多个 | 多个 | 多个 |
元素类型 | 任意 | 任意 | 仅字符 | 任意 | key:不可修改数据类型;value:任意类型 |
下标索引 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
重复元素 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
可修改性 | 支持 | 不支持 | 不支持 | 支持 | 支持 |
数据有序 | 是 | 是 | 是 | 否 | 否 |
使用场景 | 一批可修改、可重复数据 | 一批不可修改、可重复数据 | 一串字符串数据 | 一批去重复数据 | 一批键值对应数据 |
【记录学习过程的笔记,欢迎大家一起讨论,会持续更新】