很多刚学 Python 的朋友,面对五花八门的数据类型,常常一头雾水:啥时候用列表?元组为啥不能改?字典和集合又有啥区别?今天就用这套超萌手绘笔记,带你把 Python 数据类型扒得明明白白!
这张图就是 Python 数据类型的 “全家福” 啦!作为动态类型语言,Python 不用你提前声明变量类型,写起来超省心。它的内置数据类型主要分两大类:基础数据类型和容器数据类型。
- 基础款:数字(Numeric)、布尔(Bool)、字符串(String),就像乐高的基础积木,是所有数据的基石;
- 容器款:列表(List)、元组(Tuple)、字典(Dict)、集合(Set),能装下各种数据,是处理批量信息的好帮手。接下来咱们一个一个说,保证你看完就懂!
数字类型:Python 里的 “数学计算器”
Python 的数字类型,可不是简单的整数小数那么简单!它包含三种核心类型:
- 整数(int):支持任意大小,还能直接写二进制(
0b1010)、八进制(0o12)、十六进制(0xA),不用自己手动换算; - 浮点数(float):也就是我们说的小数,要注意它的精度问题,比如
0.1 + 0.2不等于0.3,这是计算机存储浮点数的小 bug 哦; - 复数(complex):形如
a+bj,可以用.real取实部、.imag取虚部,处理数学计算超方便。加减乘除、整除、取余、幂运算这些基本操作都支持,还能通过int()、float()、complex()互相转换,堪称 Python 自带的全能计算器!
布尔类型:Python 的 “开关按钮”
布尔类型(bool)就像 Python 里的 “开关”,只有两个值:True(开)和False(关),注意首字母必须大写,写错就会报错!
它还是整数的 “亲儿子”,True等价于1,False等价于0,所以True + True的结果就是2,是不是很神奇?布尔运算支持与(and)、或(or)、非(not),最常用在条件判断和循环控制里,比如if语句判断 “是否大于 0”,while循环控制 “是否继续执行”,Python 程序的逻辑全靠它来 “指挥”!
字符串类型:Python 的 “文本编辑器”
字符串(str)就是 Python 里的文本,用单引号、双引号、三引号都能定义,三引号还能直接写多行文本,超适合写长段说明。它有个关键特点:不可变序列,定义之后就不能修改单个字符,比如s = "Python",你想改s[0] = 'A'会直接报错!
字符串支持正向索引(从 0 开始)和反向索引(从 - 1 开始),还能切片操作,比如s[1:4]就能取出中间的字符;拼接(+)、重复(*)、成员判断(in)也都很方便,upper()、lower()、split()这些常用方法,处理文本简直不要太顺手,推荐用 f-string 格式化字符串,简单又高效!
列表类型:Python 的 “万能收纳盒”
列表(list)是 Python 里最常用的容器,用方括号[]定义,就像一个万能收纳盒,能装不同类型的数据,而且是可变序列,随时能增删改查!
添加元素有append()(末尾加)、extend()(批量加)、insert()(指定位置插);删除元素有remove()(删指定值)、pop()(删指定索引并返回值)、del(删指定位置);还能排序、查找位置,用x in lst判断元素是否存在。
最绝的是列表推导式,比如[x**2 for x in range(5)],一行代码就能生成[0,1,4,9,16],快速生成列表超省事!
元组类型:Python 的 “固定收纳盒”
元组(tuple)和列表长得很像,用圆括号()定义,却有个天差地别的特点:不可变!定义之后就不能修改元素,连添加删除都不行,堪称 “只读收纳盒”。
注意单元素元组一定要加逗号,比如(1,),不然 Python 会把它当成普通的括号运算!虽然不能修改,但元组支持索引、切片、计数、查找,还有个超实用的操作 —— 元组解包,比如a,b,c = (1,2,3),直接就能给多个变量赋值,交换变量a,b = b,a也靠它实现。
因为不可变,元组常用来做函数的多返回值、字典的键,能保护数据不被意外修改,安全又靠谱!
字典类型:Python 的 “键值小账本”
字典(dict)就是 Python 里的键值对账本,用{key:value}定义,key 必须是不可变类型(比如字符串、数字、元组),而且不能重复,value 可以是任意类型,超适合存 “一对一” 的数据,比如用户信息{'name': 'Alice', 'age': 25}。
访问数据可以直接用d['name'],也可以用d.get('name'),后者更安全,找不到 key 也不会报错;添加修改直接赋值就行,删除可以用del或者pop()。遍历字典可以用keys()、values()、items(),字典推导式也超好用,比如{x:x**2 for x in range(5)},一行生成平方映射表!
集合类型:Python 的 “去重小工具”
集合(set)就像 Python 里的 “自动去重器”,用花括号{}或者set()定义,注意空集合只能用set(),不然会和字典搞混!它的特点是元素唯一、无序,所以不支持索引,主要用来去重和成员检查,比如{1,2,2,3}会自动变成{1,2,3}。
集合支持添加(add())、批量添加(update())、删除(remove()/discard()),还能做并集、交集、差集、对称差集这些数学运算,处理数据去重、求交集超方便;还有个冻结集合frozenset,是不可变的集合,能当字典的键用哦!
类型转换与检查:Python 的 “类型转换器”
写代码的时候,经常需要把一种数据类型转成另一种,比如int()转整数、float()转浮点数、str()转字符串、list()转列表,这些常用转换函数一定要记牢!转换的时候要注意,比如int('abc')会报ValueError,list(123)会报TypeError,最好用try-except处理异常。
检查数据类型时,推荐用isinstance(),它会考虑继承关系,比如isinstance(True, int)会返回True,比type()更实用,能帮你精准判断数据类型,避免踩坑!
可变 vs 不可变:Python 数据类型的 “核心区别”
- 不可变类型:int、float、bool、str、tuple、frozenset,创建之后就不能修改,赋值时会创建新对象,比如
a=1; b=a; a=2,b还是 1;传递给函数时,不会影响原变量,线程也更安全。 - 可变类型:list、dict、set,能直接修改内容,赋值时多个变量会指向同一个对象,比如
a=[1]; b=a; a.append(2),b也会变成[1,2];传递给函数时,修改函数内的变量会影响原变量,一定要小心副作用!
小技巧:能改的都是容器类型,基本类型都不可变,这样就好区分多啦!
Python 的数据类型看着多,其实只要分清基础和容器、可变和不可变,搞懂各自的特点和用法,写代码的时候就再也不会懵圈啦!
如果你正在学习python,这些Python资料、数据分析、Python从入门到实践第三版pdf书籍、Python+Pycharm安装包&永久激活插件、直播课程,可以在这里免费领取哈👇