Python入门到精通(五)——Python数据容器

Python数据容器

前言

一、list 列表

1、定义

2、列表的下标索引

3、常用操作

 4、列表的遍历

二、tuple 元组

1、定义

2、常用操作

三、str 字符串

1、定义

2、常用操作

四、容器序列的切片

五、set 集合

1、定义

​编辑

2、常用操作

六、dict 字典、映射

1、定义

2、常用操作

七、总结

1、数据容器特点对比

2、通用功能


前言

1、定义:一种可以存储多个元素的Python数据类型

2、类型:list(列表)、tuple(元组)、str(字符串)、set(集合)、dict(字典)

一、list 列表

1、定义

  • 列表内的每一个数据,称之为元素
  • [ ] 作为标识
  • 列表内每一个元素之间用, 逗号隔开
  • 列表可以一次存储多个数据,且可以为不同的数据类型支持嵌套
  • 数据是有序存储的(有下标序号)
  • 允许重复数据存在
  • 可以修改(增加或删除元素等)

代码示例

# 定义一个列表
my_list1 = ["momo_via", 2024, True]
print(my_list1)  # ['momo_via', 2024, True]
print(type(my_list1))  # <class 'list'>
# 定义一个嵌套的列表
my_list2 = ["CSDN", my_list1]
print(my_list2)  # ['CSDN', ['momo_via', 2024, True]]
print(type(my_list2))  # <class 'list'>

2、列表的下标索引

  • 列表[下标],即可取出
  • 列表的每一个元素,都有编号称之为下标索引
  • 从前向后的方向,编号从0开始递增
  • 从后向前的方向,编号从-1开始递减

嵌套列表

代码示例

# 列表的下标索引
# 正向
print(my_list1[0])  # momo_via
# 反向
print(my_list1[-1])  # True
# 取出嵌套列表的元素
print(my_list2[-1][0])  # momo_via

3、常用操作

编号

使用方式

作用

1

列表.append(元素)

向列表中追加一个元素

2

列表.extend(容器)

将数据容器的内容依次取出,追加到列表尾部

3

列表.insert(下标元素)

在指定下标处,插入指定的元素

4

del 列表[下标]

删除列表指定下标元素

5

列表.pop(下标)

除列表指定下标元素

6

列表.remove(元素)

从前向后,删除此元素第一个匹配项

7

列表.clear()

清空列表

8

列表.count(元素)

统计此元素在列表中出现的次数

9

列表.index(元素)

查找指定元素在列表的下标

找不到报错ValueError

10

len(列表)

统计容器内有多少元素

代码示例

# 列表的常用方法
# 列表的查询  列表.index(元素)
my_list = ["momo_via", 2024, True]
print(my_list.index("momo_via"))  # 0
# 修改指定位置的值
my_list[0] = "CSDN"
print(my_list)  # ['CSDN', 2024, True]
# 插入元素  列表.insert(下标,元素)
my_list.insert(1, "best")
print(my_list)  # ['CSDN', 'best', 2024, True]
# 追加单个元素(尾部) 列表.append(元素)
my_list.append("python")
print(my_list)  # ['CSDN', 'best', 2024, True, 'python']
# 追加一批元素  列表.extend(元素)
my_list3 = [1, 2, 3]
my_list.extend(my_list3)
print(my_list)  # ['CSDN', 'best', 2024, True, 'python', 1, 2, 3]
# 删除列表元素
# del 列表
del my_list[3]
print(my_list)  # ['CSDN', 'best', 2024, 'python', 1, 2, 3]
# 列表.pop(下标) 取出元素后删除
ele = my_list.pop(3)
print(f"列表元素{my_list},被取出的元素是:{ele}")  # 列表元素['CSDN', 'best', 2024, 1, 2, 3],被取出的元素是:python
# 删除某元素在列表中的第一个匹配项
my_list = ['CSDN', 'CSDN', 'best', 2024, 'CSDN']
my_list.remove('CSDN')
print(my_list)  # ['CSDN', 'best', 2024, 'CSDN']
# 清空列表
my_list.clear()
print(my_list)  # []
# 统计列表内某元素的数量
my_list = ['CSDN', 'CSDN', 'best', 2024, 'CSDN']
count = my_list.count('CSDN')
print(count)  # 3
# 统计列表中全部的元素数量
count = len(my_list)
print(count)  # 5

 4、列表的遍历

                                          可以使用while循环和for循环

代码示例

while 循环

# while 循环
def list_while():
    """
    使用while循环遍历列表
    :return: None
    """
    my_list = ['CSDN', 'best', 2024, 'python']
    # 循环控制变量通过下标索引来控制,默认0
    # 每一次索引将下标变量 +1
    index = 0
    while index<len(my_list):
        ele = my_list[index]
        print(ele)
        index += 1


list_while()

for循环

# for 循环
def list_for():
    """
    使用for循环遍历列表
    :return: None
    """
    my_list = ['CSDN', 'best', 2024, 'python']
    # 循环控制变量通过下标索引来控制,默认0
    # 每一次索引将下标变量 +1
    for index in my_list:
        print(index)

list_for()

二、tuple 元组

1、定义

  • 定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型
  • 元组只有一个数据,这个数据后面要添加逗号
  • 元组也支持嵌套
  • 不可以修改元组
  • 可以修改元组内的list的内容(修改元素、增加、删除、反转等)

  • 可以使用for循环和while循环遍历

     

代码示例

# 定义元祖
t1 = ("momo_via", 2024, True)
t2 = ()
t3 = tuple()
t4 = ("csdn",)  # 单个元素的元组后面要加一个逗号
print(type(t1))
print(type(t2))
print(type(t3))
print(type(t4))
# 嵌套元组
t5 = (1, 2, 3)
t6 = (t1, t5)
print(t6)  # (('momo_via', 2024, True), (1, 2, 3))
# 下标索引取内容
print(t6[0][1])  # 2024

2、常用操作

编号

方法

作用

1

index()

查找某个数据,如果数据存在返回对应的下标,否则报错

2

count()

统计某个数据在当前元组出现的次数

3

len(元组)

统计元组内的元素个数

代码示例

# 元组的使用
t7 = ("momo_via", 2024, True, 2024, "csdn")
# index
print(t7.index(2024))  # 1
# count
print(t7.count(2024))  # 2
# len
print(len(t7))  # 5
# while 循环遍历
index = 0
while index < len(t7):
    print(t7[index])
    index += 1
# for 循环遍历
for i in t7:
    print(i)

三、str 字符串

1、定义

  • 从前向后,下标从0开始
  • 从后向前,下标从-1开始
  • 无法修改,如果必须要做,只能得到一个新的字符串,旧的字符串是无法修改
  • 支持while循环和for循环
  • 只可以存储字符串
  • 允许重复字符串存在

2、常用操作

编号

操作

说明

1

字符串[下标]

根据下标索引取出特定位置字符

2

字符串.index(字符串)

查找给定字符的第一个匹配项的下标

3

字符串.replace(字符串1, 字符串2)

将字符串内的全部字符串1,替换为字符串2

不会修改原字符串,而是得到一个新的

4

字符串.split(字符串)

按照给定字符串,对字符串进行分隔

不会修改原字符串,而是得到一个新的列表

5

字符串.strip()

字符串.strip(字符串)

移除首尾的空格和换行符或指定字符串

6

字符串.count(字符串)

统计字符串内某字符串的出现次数

7

len(字符串)

统计字符串的字符个数

 代码示例

my_str = "CSDN IS BEST"
# 通过下标索引取值
print(my_str[-1])  # T
# index  索引
print(my_str.index("IS"))  # 5
# replace 替换
new_my_str = my_str.replace("BEST", '最好的')
print(new_my_str)
# split 分割
print(my_str.split(' '))  # ['CSDN', 'IS', 'BEST']
# strip 规整操作
my_str = "   CSDN IS BEST   "
# 默认去除前后空格
print(my_str.strip())  # "CSDN IS BEST"
# 统计某字符出现的次数
print(my_str.count("S"))  # 3
# 统计字符串的长度
print(len(my_str))  # 18

四、容器序列的切片

  • 内容连续、有序,可使用下标索引的一类数据容器
  • 列表、元组、字符串,均可以可以视为序列。
  • 序列[起始:结束:步长]

起始可以省略,省略从头开始

结束可以省略,省略到尾结束

步长可以省略,省略步长为1(可以为负数,表示倒序执行)

代码示例

# 对list进行切片,从1开始,4结束,步长为1
my_list = [0,1,2,3,4,5,6]
# 步长默认为1 可以省略不写
print(my_list[1:4]) # [1, 2, 3]
# 对tuple进行切片,从头开始,到最后结束,步长为1
my_tuple = (0,1,2,3,4,5,6)
# 起始和结束可以不写,默认头和尾,步长默认1
print(my_tuple[:])  # (0, 1, 2, 3, 4, 5, 6)
# 对str进行切片,从头开始,到最后结束,步长为2
my_str = "01234567"
print(my_str[::2])  # 0246
# 对str进行切片,从头开始,到最后结束,步长为-1
# 等同于序列反转
print(my_str[::-1])  # 76543210
# 对列表进行切片,从3开始,到1结束,步长为-1
print(my_list[3:1:-1])  # [3, 2]
# 对元组进行切片,从头开始,到尾结束,步长为-2
print(my_tuple[::-2])  # (6, 4, 2, 0)

五、set 集合

1、定义

  • 支持 for循环,不支持while循环
  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是无序存储的(不支持下标索引)
  • 不允许重复数据存在
  • 可以修改(增加或删除元素等)

2、常用操作

编号

操作

说明

1

集合.add(元素)

集合内添加一个元素

2

集合.remove(元素)

移除集合内指定的元素

3

集合.pop()

从集合中随机取出一个元素

4

集合.clear()

将集合清空

5

集合1.difference(集合2)

得到一个新集合,内含2个集合的差集

原有的2个集合内容不变

6

集合1.difference_update(集合2)

在集合1中,删除集合2中存在的元素

集合1被修改,集合2不变

7

集合1.union(集合2)

得到1个新集合,内含2个集合的全部元素

原有的2个集合内容不变

8

len(集合)

得到一个整数,记录了集合的元素数量

代码示例

# 定义
my_set = {"CSDN", "python", 2024}
my_set2 = set()
# 添加新元素
my_set.add("momo_via")
print(my_set)  # {2024, 'momo_via', 'python', 'CSDN'}
# 移除元素
my_set.remove(2024)
print(my_set)  # {'python', 'momo_via', 'CSDN'}
# 随机取出一个元素
print(my_set.pop())  # CSDN
# 清空集合
print(my_set.clear())  # None
# 取两个集合的差集
my_set = {"CSDN", "python", 2024}
my_set2 = {"CSDN", "momo_via", 2024}
print(my_set.difference(my_set2))  # {'python'}
# 消除两个集合的差集
my_set.difference_update(my_set2)
print(my_set)  # {'python'}
print(my_set2)  # {2024, 'CSDN', 'momo_via'}
# 两个集合合并为一个
print(my_set.union(my_set2))  # {'python', 'CSDN', 2024, 'momo_via'}
# 统计集合元素数量
print(len(my_set))  # 1
# 集合的遍历
# 不支持下标索引,所以不能用while
for i in my_set2:
    print(i)  # 2024 CSDN momo_via

六、dict 字典、映射

1、定义

  • 使用{ }存储原始,每一个元素是一个键值对
  • 每一个键值对包含Key和Value(用冒号分隔)
  • 键值对之间使用逗号分隔
  • Key和Value可以是任意类型的数据(key不可为字典)
  • 可以容纳多个数据
  • 可以通过Key获取到Value,Key不可重复(重复会覆盖)
  • 不支持下标索引
  • 可以修改(增加或删除更新元素等)
  • 支持for循环,不支持while循环

代码示例

# 定义字典
my_dict = {"momo_via": 24, "csdn": 2024}
# 定义空字典
my_dict2 = {}
my_dict3 = dict()
# 基于key取value
print(my_dict["csdn"])  # 2024
# 字典的嵌套
stu_score = {
    "张三": {
        "语文": 80,
        "数学": 98,
        "英语": 92,
    },
    "李四": {
        "语文": 95,
        "数学": 88,
        "英语": 85,
    }
}
print(stu_score["张三"]["语文"])  # 80
# 新增元素
stu_score = {
    "张三": 88,
    "李四": 95
}
stu_score["王二"] = 90
print(stu_score)  # {'张三': 88, '李四': 95, '王二': 90}
# 更新元素
stu_score["王二"] = 85
print(stu_score)  # {'张三': 88, '李四': 95, '王二': 85}
# 删除元素
stu_score.pop("王二")
print(stu_score)  # {'张三': 88, '李四': 95}
# 清空元素
print(stu_score.clear())  # None
# 获取全部的key
stu_score = {
    "张三": 88,
    "李四": 95
}
keys = stu_score.keys()
print(keys)  # dict_keys(['张三', '李四'])
# 遍历字典
# 通过获取到全部的key
for i in keys:
    print(i)
    print(stu_score[i])
# for 循环
for i in stu_score:
    print(i)
    print(stu_score[i])
# 字典元素个数
print(len(stu_score))  # 2

2、常用操作

编号

操作

说明

1

字典[Key]

获取指定Key对应的Value

2

字典[Key] = Value

添加或更新键值对

3

字典.pop(Key)

取出Key对应的Value并在字典内删除此Key的键值对

4

字典.clear()

清空字典

5

字典.keys()

获取字典的全部Key,可用于for循环遍历字典

6

len(字典)

计算字典内的元素数量

练习题

代码示例

# 组织字典记录数据
info_dict = {
    '王力红': {
        "部门": "科技部",
        "工资": 3000,
        "级别": 1
    },
    '周杰轮': {
        "部门": "市场部",
        "工资": 5000,
        "级别": 2
    },
    '林俊结': {
        "部门": "市场部",
        "工资": 7000,
        "级别": 3
    },
    '张雪有': {
        "部门": "科技部",
        "工资": 4000,
        "级别": 1
    },
    '刘德滑': {
        "部门": "市场部",
        "工资": 6000,
        "级别": 2
    },
}
# for 循环遍历字典
for name in info_dict:
    # if 条件判断符合条件员工
    if info_dict[name]["级别"] == 1:
        # 升职加薪操作
        # 获取到员工的信息字典
        employee_info_dict = info_dict[name]
        # 修改员工的信息
        employee_info_dict["级别"] = 2  # 级别+1
        employee_info_dict["工资"] += 1000  # 工资+1000
        # 将员工的信息更新回info_dict
        info_dict[name] = employee_info_dict
# 输出结果
print(info_dict)

输出

七、总结

1、数据容器特点对比

2、通用功能

  • 33
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值