python第一阶段第六章python数据容器

1. 数据容器入门

学习数据容器,就是为了批量存储或批量使用多份数据

2. 数据容器:list(列表)

2.1 列表的定义

注意:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套

2.2 列表的下标索引

2.3 列表的常用操作

2.3.1 插入元素

append追加是整个塞进去;extend是拆分开

2.3.2 删除元素

两种删除方法:

1.使用索引删除

2.直接删除指定内容

2.3.3 清空元素

2.3.4 修改元素

2.3.5 统计元素个数

2.3.6 总结

3.list(列表)的遍历

3.1 while循环

3.2 for循环

python 复制代码
age_list = [21,25,21,23,22,20]
def age_for():
    for index in age_list:
        print(index)
age_for()

3.3 区别

4. 数据容器: tuple(元组)

4.1 元组的定义

python 复制代码
t1 = (1,'haha',True)
t2 = ()
t3 = tuple()
# t1的类型是<class 'tuple'>,内容是(1, 'haha', True)
print(f"t1的类型是{type(t1)},内容是{t1}")
t4 = ('haha')
# t4的类型是<class 'str'>,内容是haha;
# t4是一个字符串,不是元组;因此对于单个元素的元组,后面也需要加逗号
print(f"t4的类型是{type(t4)},内容是{t4}")
#元组的嵌套
t5 = ((1,2,3),(4,5,6))
# t5的类型是<class 'tuple'>,内容是((1, 2, 3), (4, 5, 6))
print(f"t5的类型是{type(t5)},内容是{t5}")

4.2 元组的相关操作

4.3 元组的特点

4.4 元组的小案例

python 复制代码
my = ('周杰伦',11,['football','music'])
print(f"年龄下标的位置是{my.index(11)}")
print(f"学生的姓名是{my[0]}")
del my[2][0]
my[2].append("coding")
print(my)

5. 数据容器: str(字符串)

5.1 字符串的定义

5.2 字符串的常用操作

5.2.1 查找特定字符串的下标索引

5.2.2 字符串的替换

python 复制代码
str1 = "nihao haha zhang"
new = str1.replace("haha","xixi")
# 替换前是nihao haha zhang,替换后是nihao xixi zhang
print(f"替换前是{str1},替换后是{new}")

5.2.3 字符串的分割

python 复制代码
str1 = "nihao haha zhang"
# 括号里写根据什么进行分割
new_list = str1.split(" ")
# 将字符串nihao haha zhang,进行split切割后得到['nihao', 'haha', 'zhang'],类型是<class 'list'>
print(f"将字符串{str1},进行split切割后得到{new_list},类型是{type(new_list)}")

5.2.4 字符串的规整操作

1.不会在原字符串上改,而是要赋予到新的字符串

2。从首和尾开始依次判断每个字符是否是参数中包含的字符,如果是就继续去除,否额就停止判断,和参数字符串顺序没有关系

5.2.5 字符串的遍历

5.2.6 总结

python 复制代码
str1 = "itheima itcast boxuegu"
num = str1.count("it")
# 字符串it出现了3次
print(f"字符串it出现了{num}次")
str2 = str1.replace(" ","|")
#将字符串itheima itcast boxuegu,进行replace替换空格后得到itheima|itcast|boxuegu
print(f"将字符串{str1},进行replace替换空格后得到{str2}")
str3 = str2.split("|")
# 将字符串itheima|itcast|boxuegu,进行split切割后得到['itheima', 'itcast', 'boxuegu'],类型是<class 'list'>
print(f"将字符串{str2},进行split切割后得到{str3},类型是{type(str3)}")

6. 数据容器(序列)的切片

6.1 序列的定义

6.2 序列的常用操作--切片

步长为负数,可以将字符串进行反转

python 复制代码
# 左闭右开区间,包含左边的索引,不包含右边的索引
# 对list进行切片,从1开始,4结束,步长1
my_list = [0,1,2,3,4,5,6]
result1 = my_list[1:4]#步长默认是1,所以可以省略不写
print(f"结果1:{result1}")# 结果1:[1, 2, 3]
# 对tuple进行切片,从头开始,到最后结束,步长1
my_tuple =  (0,1,2,3,4,5,6)
result2 = my_tuple[:]# 起始和结束不写表示从头到尾
print(f"结果2:{result2}")# 结果2:(0, 1, 2, 3, 4, 5, 6)
# 对str进行切片,从头开始到最后结束,步长2
str = "01234567"
result3 =str[::2]
print(f"结果3:{result3}")# 结果3:0246
#对str进行切片,从头开始到最后结束,步长-1
result4 = str[::-1]
print(f"结果4:{result4}")# 结果4:76543210
#对列表进行切片,从3开始,到1结束,步长-1
result5 = my_list[3:1:-1]
print(f"结果5:{result5}")# 结果5:[3, 2]
#对元组进行切片,从头开始到最后结束,步长-2
result6 = my_tuple[::-2]
print(f"结果6:{result6}")# 结果6:(6, 4, 2, 0)

7.数据容器:set(集合)

7.1 定义

python 复制代码
my_set = {"hei","ha","hei","ni","ha"}
#my_set的内容是{'ha', 'hei', 'ni'},类型是<class 'set'>
# 所以元素不重复,且无序
print(f"my_set的内容是{my_set},类型是{type(my_set)}")
# 定义空集合
empty_set = set()
#empty_set的内容是set(),类型是<class 'set'>
print(f"empty_set的内容是{empty_set},类型是{type(empty_set)}")

7.2 集合的常用操作

7.2.1 添加新元素

7.2.2 移除元素

7.2.3 从集合中随机取出元素

7.2.4 清空集合

7.2.5 取出2个集合的差集

7.2.6 消除2个集合的差集

7.2.7 2个集合合并

7.2.8 计算集合的长度

python 复制代码
set = {1,2,3,4,5,1,2,3,4,5}
num =len(set)
#set的元素个数是5
print(f"set的元素个数是{num}")

7.2.9 集合的遍历

不可以使用while遍历

python 复制代码
set = {1,2,3,4,5,1,2,3,4,5}
for i in set:
    print(i)

7.2.10 总结

7.3 集合的特点

8. 数据容器:dict(字典、映射)

8.1 字典的定义

这就是为什么集合在定义空集合时,为什么不能写my_set = {};因为被字典用了

8.2 字典的嵌套

python 复制代码
my_dict = {
    "王力宏":{
    "年龄":18,
    "性别":"男",
    "手机号":"0000"},
#元素之间要有逗号
    "周杰伦":{
    "年龄":12,
    "性别":"男",
    "手机号":"1382"},

    "张三":{
    "年龄":2,
    "性别":"女",
    "手机号":"1280"}
}
print(my_dict)
#看周杰伦的性别
print(my_dict["周杰伦"]["性别"])

8.3 字典的常用操作

8.3.1 新增元素

8.3.2 更新元素

8.3.3 删除元素

8.3.4 获取全部的key

8.3.4 清空字典

8.3.5 字典遍历

python 复制代码
#方式一:通过获取到全部的key来完成遍历
keys = my_dict.keys()
print(keys)
for key in keys:
    print(f"字典的key1是{key}")
    print(my_dict[key])
# 方式二:直接遍历字典序
for i in my_dict:
    print(f"字典的key2是{i}")
    print(my_dict[i])

8.3.6 字典的数量

python 复制代码
num = len(my_dict)
print(f"字典中元素数量是{num}")

8.3.7 总结

8.4 案例

python 复制代码
my_dict = {
    "王力宏":{
        "部门": "科创部",
        "工资": 3000,
        "级别": 1
    },
    "林俊杰": {
        "部门": "科创部",
        "工资": 1000,
        "级别": 3
    },
    "周杰伦": {
        "部门": "市场部",
        "工资": 5000,
        "级别": 2
    }
}
for i in my_dict:
    my_dict[i]["工资"] += 1000
    my_dict[i]["级别"] += 1
print(my_dict)

9.数据容器对比总结

9.1 数据容器的分类

9.2 特点对比

9.3 使用场景

10. 数据容器的通用操作

10.1 遍历

10.2 统计

10.3 转换功能

python 复制代码
my_list = [1,2,3,4,5]
my_tuple = (1,2,3,4,5)
my_str = "abcdefg"
my_set ={1,2,3,4,5}
my_dict = {"key1":1,"key2":2,"key3":3,"key4":4,"key5":5}
#容器转为列表
print(f"列表转为列表的结果是:{list(my_list)}")
print(f"元组转为列表的结果是:{list(my_tuple)}")
#字符串转为列表的结果是:['a', 'b', 'c', 'd', 'e', 'f', 'g']
print(f"字符串转为列表的结果是:{list(my_str)}")
print(f"集合转为列表的结果是:{list(my_set)}")
#字典转为列表的结果是:['key1', 'key2', 'key3', 'key4', 'key5']
print(f"字典转为列表的结果是:{list(my_dict)}")
#字典在转换为列表、元组、集合的时候,他的value会丢失
# 但转换为字符串时,所有元素都能够保留下来

10.4 排序

python 复制代码
my_list = [3,1,2,5,4]
my_tuple = (3,1,2,5,4)
my_str = "bcdaefg"
my_set ={3,1,2,5,4}
my_dict = {"key1":3,"key2":1,"key3":2,"key4":5,"key5":4}
#排完序之后都变成了列表对象
# [1, 2, 3, 4, 5]
print(f"列表排序后的结果是:{sorted(my_list)}")
print(f"元组排序后的结果是:{sorted(my_tuple)}")
print(f"字符串排序后的结果是:{sorted(my_str)}")
print(f"集合排序后的结果是:{sorted(my_set)}")
# 字典排序后的结果是:['key1', 'key2', 'key3', 'key4', 'key5']
print(f"字典排序后的结果是:{sorted(my_dict)}")

#反向排序
print(f"列表反向排序后的结果是:{sorted(my_list,reverse=True)}")
print(f"元组反向排序后的结果是:{sorted(my_tuple,reverse=True)}")
# 字符串反向排序后的结果是:['g', 'f', 'e', 'd', 'c', 'b', 'a']
print(f"字符串反向排序后的结果是:{sorted(my_str,reverse=True)}")
print(f"集合反向排序后的结果是:{sorted(my_set,reverse=True)}")
# 字典反向排序后的结果是:['key5', 'key4', 'key3', 'key2', 'key1']
print(f"字典反向排序后的结果是:{sorted(my_dict,reverse=True)}")

10.5 总结

11.拓展:字符串大小比较的方式

相关推荐
YouEmbedded1 小时前
解码C++基础——从C到C++
开发语言·从c到c++
yong99901 小时前
基于多普勒连续波雷达原理的MATLAB测速程序
开发语言·matlab
o***36931 小时前
python爬虫——爬取全年天气数据并做可视化分析
开发语言·爬虫·python
枫叶丹41 小时前
【Qt开发】Qt窗口(三) -> QStatusBar状态栏
c语言·开发语言·数据库·c++·qt·microsoft
亮子AI1 小时前
【JavaScript】修改数组的正确方法
开发语言·javascript·ecmascript
q***31141 小时前
【JAVA进阶篇教学】第十二篇:Java中ReentrantReadWriteLock锁讲解
java·数据库·python
浮尘笔记2 小时前
Go语言中如何实现线程安全的map
开发语言·后端·安全·golang
时尚IT男2 小时前
Python 魔术方法详解:掌握面向对象编程的精髓
开发语言·python