欢迎光临
我们一直在努力

Python(2)六大数据类型详解:从数值到字典,掌握增删改查与切片操作

第一部分:本篇主要想表达的内容

1. 一句话核心总结

讲解了Python中的六大数据类型(数值、字符串、列表、元组、集合、字典)的定义、特性、以及各自的增删改查操作,并重点强调了可变与不可变类型之间的区别。

2. 核心概念定义
  • 六大数据类型:视频中指数值(number)、字符串(string)、列表(list)、元组(tuple)、集合(set)、字典(dict)。
  • 核心特点:
    • 可变与不可变:列表、字典、集合是可变数据类型(可修改内容);数值、字符串、元组是不可变数据类型(修改会创建新对象)。
    • 数值类型:包含整型(int)、布尔型(bool)、浮点型(float)、复数(complex)。布尔型是整型的子类,True值为1,False值为0。
    • 字符串:使用单引号、双引号或三引号定义,支持索引和切片,不可变。
    • 列表:使用方括号定义,元素可任意类型且可嵌套,支持增删改查。
    • 元组:使用小括号定义,不可变,单元素元组需加逗号。
    • 集合:使用大括号或set()函数定义,元素无序且唯一,自动去重。
    • 字典:使用大括号定义键值对,键必须为不可变类型,键唯一。
3. 分类/类型/步骤
类型名称定义方式可变性特点常见操作
数值(number) 直接赋值(如 a=1) 不可变 包含int、bool、float、complex;float不精确存储 加减乘除、整除//、求余%、幂**、类型转换int()/float()
字符串(string) 引号("hello") 不可变 支持索引(从0开始)和切片;三引号可定义多行 索引查询、切片[start🔚step]、拼接+
列表(list) 方括号([1,2,3]) 可变 元素可任意类型、可嵌套;支持索引和切片 append()增、remove()删、索引赋值改、切片查
元组(tuple) 小括号((1,2,3)) 不可变 单元素需加逗号;提高代码安全性 索引查询、切片、count()计数、index()查找
集合(set) 大括号或set() 可变 无序、元素唯一、自动去重;不支持索引和切片 add()增、remove()删、交集&、并集|
字典(dict) 大括号键值对({"name":"Tom"}) 可变 键必须为不可变类型(数值/字符串/元组);键唯一 dict["key"]=value增改、del dict["key"]删、键/值查询
4. 排序或对比关系
  • 可变 vs 不可变:
    • 可变:列表、字典、集合(可进行增删改操作)
    • 不可变:数值、字符串、元组(只能查询,修改会创建新对象)
  • 索引与切片:字符串、列表、元组均支持索引和切片(语法[start:end:step],左闭右开,步长默认为1)。集合和字典不支持(无序)。
  • 定义方式的易混淆点:
    • {}:若无键值对,默认为字典;若只有元素无冒号,为集合。
    • (1):为整型;(1,)才为元组。
5. 具体建议与注意事项
  • 建议:
    • 定义变量时使用有实际意义的名称(如age、name)。
    • 字符串格式化推荐使用f-string表达式(如f"{变量:.2f}"保留两位小数)。
    • 元组适用于数据不需被修改的场景,提高代码安全性和可预测性。
  • 风险或注意事项:
    • 浮点型精度问题:0.1 + 0.2结果不精确,会得到0.30000000000000004,可通过格式化输出保留小数位解决。
    • 切片左闭右开:[start:end]包含start索引的元素,不包含end索引的元素。
    • 元组单元素陷阱:(1)是整型,(1,)才是元组。
    • 集合自动去重:重复元素会被自动合并,不会报错。
    • 字典键必须唯一且不可变:重复键时后面会覆盖前面;键不能使用列表等可变类型。
    • Jupyter Notebook特性:默认输出最后一个语句的值;变量会被持续存储,重新运行cell会基于之前的状态修改。
6. 补充说明

需掌握的难点:切片操作(字符串和列表的切片非常重要,后续在机器学习、数据处理中频繁使用)。


第二部分:理解这些更容易理解本篇文章内容。(未提及的常见知识点与需了解的概念)

  • 基础概念类:

    • 可变与不可变对象的内存机制:第一部分内容虽提到可变/不可变,但未深入解释。不可变对象(如字符串)修改时会创建新内存地址;可变对象(如列表)修改时内存地址不变。
    • 深拷贝与浅拷贝:列表嵌套时,使用copy()只拷贝外层,内层仍共享引用;需用copy.deepcopy()实现完全独立拷贝。
    • 字符串驻留机制:Python对小整数和短字符串会复用对象以节省内存,第一部分未提及。
  • 风险类:

    • 浮点数比较风险:直接使用==比较浮点数可能因精度问题失败,应使用math.isclose()或比较差值绝对值。
    • 列表作为函数默认参数的风险:第一部分未提及,但这是常见坑——默认参数def f(lst=[])会在多次调用间共享同一列表。
    • 字典的KeyError:访问不存在的键会报错,应使用dict.get(key, default)安全获取。
  • 实操类:

    • 列表推导式:第一部分未介绍,但这是创建列表的高效方式(如[x*2 for x in range(10)])。
    • 字符串的join()方法:拼接字符串比+更高效,尤其是大量拼接时(如" ".join(["a","b","c"]))。
    • 字典的setdefault()和defaultdict:处理缺失键时的更优雅方案。
    • 集合运算的其他操作:差集-、对称差集^,第一部分只讲了交集和并集。
    • 类型检查:使用isinstance()而非type(),因为isinstance()支持继承关系(如布尔型是整型子类)。
  • 对比类:

    • 列表 vs 元组的选择:除可变性外,元组占用内存更小、可作为字典键(因不可变),列表则不能作为键。
    • 集合 vs 列表的去重场景:集合去重效率高(哈希表),但无序;列表可保持顺序但去重需手动遍历或转换。
    • remove() vs pop() vs del:remove()按值删除第一个匹配项;pop()按索引删除并返回值;del按索引或切片删除,无返回值。
  • 常见误区:

    • 误认为元组完全不可变:若元组内包含列表等可变对象,列表内容可改变,但元组的“不可变”指的是元素引用不可变。
    • 误认为=是等于号:视频提到赋值运算符=不等于比较运算符==,但未展开比较运算。
    • 忽略字符串的strip()、split()、replace():这些是字符串处理的常用方法,第一部分未涉及。
    • 混淆集合与字典的大括号:{}默认是空字典,空集合必须用set()。
  • 进阶知识点:

    • 哈希表原理:字典和集合基于哈希表实现,键必须可哈希(不可变类型),查找时间复杂度O(1)。
    • range()对象的特性:视频提到range(10)创建0-9,但未说明range是惰性求值的迭代器,不直接生成列表。
    • 解包操作:a,b = (1,2)或*rest, last = [1,2,3,4],视频未讲。
    • 枚举enumerate()和压缩zip():遍历列表时同时获取索引和值,或并行遍历多个列表。

  • 第三部分:更好的让大家理解,我汇总了第一、二部分

    1. 主题概述

    Python中的六大数据类型包括数值、字符串、列表、元组、集合、字典,它们构成了Python处理数据的基础。核心分类依据是可变性:列表、字典、集合是可变类型(可增删改),数值、字符串、元组是不可变类型(修改会创建新对象)。数值类型中需特别注意浮点数的精度问题,布尔型是整型的子类(True=1, False=0)。字符串支持索引和切片但不可变,元组类似列表但不可变且可作字典键,集合无序且自动去重,字典以键值对形式存储且键必须为不可变类型。

    2. 分类与对比
    类型可变性定义方式是否支持索引/切片主要用途
    数值 不可变 a=1 数学计算
    字符串 不可变 "text" 文本处理
    列表 可变 [1,2,3] 有序可变序列
    元组 不可变 (1,2,3) 不可变序列,可作字典键
    集合 可变 {1,2,3} 或 set() 去重、集合运算
    字典 可变 {"a":1} 否(键访问) 键值映射
    3. 风险与注意事项
    • 浮点精度风险:0.1+0.2 != 0.3,比较时应使用math.isclose()或保留小数位。
    • 切片边界风险:切片遵循左闭右开原则,[0:5]包含索引0~4,不包含5。
    • 元组单元素陷阱:(1)是整型,(1,)才是元组。
    • 字典键不存在风险:直接访问缺失键会引发KeyError,应使用get()方法。
    • 可变对象作为函数默认参数的风险(进阶):会导致多次调用间共享状态。
    • 集合和字典的无序性:不要依赖其元素顺序,Python 3.7+字典虽保留插入顺序,但不应视为核心特性。
    4. 实操建议
    • 数值操作:使用//整除、%取余、**幂运算;类型转换用int()、float();保留小数位用f"{x:.2f}"。
    • 字符串操作:拼接用join()(高效),分割用split(),去除首尾空白用strip()。
    • 列表操作:追加用append(),删除用remove()或pop(),排序用sort()(原地)或sorted()(新列表)。
    • 列表推导式(补充):如[x*2 for x in range(10)]更简洁高效。
    • 字典操作:安全获取值用get(key, default);批量更新用update();遍历用items()同时获取键和值。
    • 集合操作:去重直接set(list);交集&、并集|、差集-。
    • 类型检查:使用isinstance(obj, type)而非type(),以支持继承关系(如布尔型是整型子类)。
    5. 常见误区辨析
    • 误区1:元组完全不可变。正解:若元组内包含可变对象(如列表),列表内容可改变,但元组的元素引用不变。
    • 误区2:=是等于号。正解:=是赋值运算符,比较相等应用==。
    • 误区3:{}是空集合。正解:{}是空字典,空集合必须用set()。
    • 误区4:列表和元组可互换使用。正解:元组占用内存更小、可哈希(能作字典键),列表更灵活但不可哈希。
    • 误区5:浮点数可以直接比较。正解:浮点数运算存在精度误差,应使用误差范围比较。

    通过本篇内容,你将掌握:

    • 理解Python六大数据类型(数值、字符串、列表、元组、集合、字典)的定义与核心特性
    • 区分可变类型(列表、字典、集合)与不可变类型(数值、字符串、元组)及其适用场景
    • 掌握字符串、列表、元组的索引与切片操作(左闭右开、步长)
    • 识别浮点精度陷阱、元组单元素陷阱、字典键错误等常见风险
    • 正确执行各类型的增删改查操作(append、remove、add、键值赋值等)
    • 避免常见误区(如混淆=与==、误用空集合、误认元组完全不可变)

    🙏关注up主,成为up主的动力来源,希望对你们有所帮助,下一章见

    赞(0)
    未经允许不得转载:171主机测评 » Python(2)六大数据类型详解:从数值到字典,掌握增删改查与切片操作
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址