一、数据容器
定义:
数据容器就是指一种可以容纳多份数据的数据类型,容纳的每一份数据称之为一个元素,每一个元素可以是任意类型的数据。
分类:
列表list、元组tuple、字符串str、集合set、字典dict
二、列表list
1 列表定义
基本语法:
变量名称 = [元素1, 元素2, 元素3, 元素4, ···]
空列表定义:
变量名称 = [] # 方式1
变量名称 = list() # 方式2
2 列表的常用操作
2.1 查找某元素下标 - index
功能:
查找指定元素在列表中的下标,查到返回该元素下标索引值,未查到则报错ValueError
语法:
列表.index(元素)
示例:
list1 = ["a", "b", "c", "d"]
index1 = list1.index("b")
2.2 列表的修改功能
2.2.1 修改某个元素
功能:
修改列表中指定位置的元素的值
语法:
列表[下标] = 值
示例:
list1 = ["a", "b", "c", "d"]
list1[2] = "e"
2.2.2 插入元素
功能:
在列表中指定位置插入一个指定的元素
语法:
列表.insert(下标, 元素)
示例:
list1.insert(2, "f")
2.2.3 追加单个元素
功能:
在列表尾部追加一个指定的元素
语法:
列表.append(元素)
示例:
list1.append("h")
2.2.4 追加一个列表中的所有元素
功能:
将一个列表中的所有元素取出,依次在追加在目标列表的尾部
语法:
列表.extend([元素1, 元素2, 元素3, ···])
示例:
list2 = ["j", "k", "l"]
list1.extend(lsit2)
2.2.5 删除列表中元素
功能:
将一个列表中的指定位置的元素删除
语法:
方式1:del 列表[下标]
方式2:列表.pop(下标)
示例:
del list1[3]
element = list1.pop(3) # 删除列表中下标为3的元素,并且将该元素值取出并返回
2.2.6 删除某个元素在列表中的第一个匹配项
功能:
删除某个元素在列表中的第一个匹配项
语法:
列表.remove(元素)
示例:
list1.remove("d")
2.2.7 清空列表
功能:
将一个列表中所有元素清空
语法:
列表.clear()
示例:
list1.clear()
2.3 统计列表中某元素的个数
功能:
统计某个元素在列表中的个数
语法:
列表.count(元素)
示例:
list1.count("a")
2.4 统计列表中元素的个数
功能:
统计列表中元素的个数
语法:
len(列表)
示例:
len(list1)
3 列表的遍历
方式一: while循环遍历
index = 0
while index < len(list1):
element = list1[index]
print(element)
index += 1
方式二: for循环遍历
for element in list1:
print(element)
三、元组
1 定义
定义元组变量:
变量名称 = (元素,元素 ,元素 , ···, 元素)
定义空元组
变量名称 = () # 方式1
变量名称 = tuple() #方式2
2 元组的常用操作
2.1 查找元素位置
语法:
元组.index(元素)
示例:
index = tuple1.index("a")
2.2 统计某个元素的个数
语法:
元组.count(元素)
示例:
count = tuple1.count("a")
2.3 统计元组中元素的个数
语法:
元组.len(元素)
示例:
len = tuple1.len("a")
3 元组注意事项
"在对元组进行操作时,注意元组中的内容是不可修改的,否则会报错。"
"如果元组中嵌套了list列表,列表中的元素是可以修改的"
四、字符串str
1 定义
从容器的角度看,字符串就是字符的容器,一个字符串可以存放任意数量的字符。
注意:字符串是只读的,不支持修改操作。
2 字符串的常用操作
通过下标索引获取值:
取出字符串str1中的下标为1的元素:value = str1[1]
查找特定字符串的下标索引值:
str2 = "tom is a boy"
index = str2.index("is")
字符串的替换:
str3 = "mystr and itstr"
newstr3 = str3.replace("str", "字符串")
"注意:该功能是将一个字符串内的全部 字符串1 替换为 字符串2。但是这个功能并没有对字符串修改,而是产生一个新的字符串。
"
字符串的分割:
语法:
字符串.split(分隔符字符串)
功能:
按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中。
示例:
phone = "178 5566 2233"
nphone = phone.split(" ")
"注意:该操作也没有改变原字符串本身,而是得到一个列表对象。"
字符串的规整操作 - 去首尾空格:
语法:
字符串.strip()
示例:
str4 = " string 123 aaa "
newstr4 = str4.strip()
字符串的规整操作 - 去首尾指定字符串:
语法:
字符串.strip(字符串)
示例:
str5 = "12string 123 aaa21"
newstr5 = str4.strip("12")
"注意:这里去除字符串前后的字符12,这里的12指1和2,没有特定的顺序,所有字符串末尾的21也会去除"
统计字符串中某个字符串的出现次数:
语法:
字符串.count(字符串)
示例:
count = str.count("it")
统计字符串的长度:
语法:
len(str)
示例:
lenth = len(str)
五、数据容器的切片
1 定义
定义:
切片就是从一个序列中取出一个子序列的操作
语法:
序列[起始下标:结束下标:步长]
六、集合set
1 定义
基本语法:
定义集合变量:
变量名称 = {元素1, 元素2, 元素3, 元素4}
定义空集合:
变量名称 = set()
2 集合的常用操作
添加新元素:
语法:
集合.add("元素")
移除元素:
语法:
集合.remove("元素")
随机取出一个元素:
语法:
element = 集合.pop()
清空集合:
语法:
集合.clear()
取两个集合的差集:
语法:
集合3 = 集合1.difference(集合2)
消除两个集合的差集:
语法:
集合1.difference_update(集合2)
"该方法实质是在集合1内删除和集合2中相同的元素"
合并两个集合:
语法:
集合3 = 集合1.union(集合2)
统计集合元素的数量:
语法:
num = len(集合)
3 集合的注意事项
"
集合不支持下标索引,不能用while循环进行遍历。
集合中不能存储重复元素。
"
七、字典
1 定义
定义字典变量:
变量名称 = {key: value, key: value, key: value}
定义空字典:
变量名称 = {} # 方式1
变量名称 = dict() # 方式2
"字典不支持下标索引,字典的key是惟一的,不能重复出现,否则,后面的会取代前面的"
2 字典的常用操作
新增元素:
语法:
字典["key"] = value
更改元素:
语法:
字典["key"] = value
"这里的key存在于字典中,就是更新或修改,不存在就是新增"
删除元素:
语法:
字典.pop(key)
该方法可以在删除时取出对应值,即 value1 = 字典.pop(key)
清空字典:
语法:
字典.clear()
获取全部的key:
语法:
keys = 字典.keys()
遍历字典:
方式1:通过获取全部的key实现遍历
语法:
for key in keys:
print(f"全部的key是:{key}")
print(f"全部的value是:{字典[key]}")
方式2:可以直接对字典进行for循环
语法:
for key in 字典:
print(f"字典中key为:{key}")
print(f"字典中value为:{字典[key]}")
统计字典中元素数量:
语法:
num = len(字典)
八、数据容器总结对比
1 分类
是否支持下标索引:
支持:
列表、元组、字符串 --- 序列类型
不支持:
集合、字典 --- 非序列类型
是否支持重复元素:
支持:
列表、元组、字符串 --- 序列类型
不支持:
集合、字典 --- 非序列类型
是否可以修改:
支持:
列表、集合、字典
不支持:
元组、字符串
2 数据容器中其他通用方法
len()元素个数
max()最大元素
min()最小元素
3 容器的通用转换功能
容器转列表:
列表转列表:list(list)
元组转列表:list(tuple)
字符串转列表:list(str)
集合转列表:list(set)
字典转列表:list(dict)
容器转元组:
tuple(tuple)
...
容器转字符串:
str(str)
...
容器转集合:
set(set)
...
"容器转字典是不可行的"
4 容器的通用排序功能
sorted(list)
sorted(tuple)
sorted(set)
sorted(str)
sorted(dict)