Python学习 -- 数据容器

282 阅读7分钟

一、数据容器

定义:
数据容器就是指一种可以容纳多份数据的数据类型,容纳的每一份数据称之为一个元素,每一个元素可以是任意类型的数据。
分类:
列表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)