Python六大基础数据类型全维度解析(区分可变/不可变)
博客摘要Python官方六大内置基础类型数字、字符串、列表、元组、字典、集合。本文按照可变/不可变核心维度分类理清内存修改逻辑解决新手分不清什么时候修改原数据、什么时候生成新数据的问题。一、分类总览不可变值不可改、可变值可改类型分类包含类型内存特性不可变类型数字(int/float/bool/complex)、字符串(str)、元组(tuple)内部数据无法原地修改修改必定生成新内存对象可变类型列表(list)、字典(dict)、集合(set)支持原地增删改内存地址不发生改变二、逐个类型详解实操案例1、数字类型 Number包含4个子类型int整型无位数上限支持超大整数、float浮点型存在精度丢失如0.10.2≠0.3、bool布尔型True1False0属于int子类、complex复数工程极少使用。易错点浮点精度丢失解决方案使用decimal标准库做高精度运算。2、字符串 str由单/双/三引号包裹的字符序列不可变。所有字符串修改替换、拼接都会新建对象不会改动原字符串。3、列表 list有序、可重复、元素类型任意中括号[]定义可变类型。底层是动态数组自动扩容缩容查询速度快中间插入删除速度慢。4、元组 tuple有序、可重复、元素类型任意小括号()定义不可变。唯一特例元组内嵌套列表列表内部数据可以修改元组本身地址不变。5、字典 dict3.7及以上版本有序key不可重复、必须是不可变类型value任意类型大括号键值对定义可变类型。底层哈希表实现。6、集合 set无序、不可重复、元素必须是不可变类型大括号无键值对定义可变类型。主要作用天然去重不支持索引取值。面试高频问答问元组是不可变类型为什么元组里列表能改答元组不可变指的是元素的内存地址不可变列表地址不变内部数据修改不违反规则。