🐍 Python 常用数据类型一张图速记(附彩蛋口诀)

54 阅读2分钟

微信图片_20251014151033_10_20.jpg

1️⃣ 不可变序列(可 hash,能当 dict 键)

类型关键字核心特点常用场景速记代码
intint()任意精度计数、ID10**100 # 秒算超大阶乘
floatfloat()双精度 64b科学计算round(3.1415, 2)
boolbool()True/False 子类 int逻辑开关is_ok = path.exists()
strstr()Unicode,不可变文本处理'{{}}'.format('插槽')
bytesb''8-bit 不可变网络/文件原始流b'GET / HTTP/1.1\r\n'
tuple()有序只读函数多返、dict 键return x, y # 打包

彩蛋口诀:**“int float bool 算数走,str bytes 文本流,tuple 打包键值留”**🎵


2️⃣ 可变序列(原地改,注意别名陷阱)

类型关键字核心特点常用场景一行演示
list[]动态数组堆栈/队列/收集器lst[::-1] # 翻转
bytearraybytearray()可变 bytes二进制协议拼接ba.remove(0x00)

注意lst2 = lst1 只是引用,深拷贝copy.deepcopylst1.copy()


3️⃣ 映射类型(键→值,O(1) 查找)

类型关键字核心特点常用场景一行演示
dict{}插入有序*,key 唯一配置/JSON/计数{k: v for k, v in zip(keys, vals)}
collections.defaultdict工厂默认值免 if 初始化dd = defaultdict(int)
collections.OrderedDict保持插入序老代码兼容Py3.7+ 原生 dict 已有序*

* Python 3.7 起官方保证 dict 插入有序,性能还涨📈


4️⃣ 集合类型(去重、交并差)

类型关键字核心特点常用场景一行演示
setset()无序不重复去重、存在测试set(lst) - blacklist
frozensetfrozenset()不可变集合当 dict 键fs = frozenset({1, 2})

5️⃣ 其他内置宝藏(常被忽略)

类型关键字核心特点常用场景一行演示
NoneTypeNone单例空对象默认返回值/可选def foo(x=None):
rangerange()惰性数列循环 & 切片list(range(5, 0, -1))
enumerateenumerate()索引+元素迭代循环要序号for i, v in enumerate(lst):
zipzip()拉链迭代多列表同步dict(zip(keys, vals))

6️⃣ 可变性 ⇨ 函数传参坑⚠️

def add_one(lst: list):
    lst.append(1)      # 原地改

a = [0]
add_one(a)
print(a)  # [0, 1]  ← 外部同步变

不想被改?传副本 func(a.copy()) 或用 tuple


7️⃣ 类型判断 3 连招 🕵️

isinstance(obj, (int, float))  # 推荐:支持继承
type(obj) is int               # 精确类型
hasattr(obj, "__iter__")       # 是否可迭代

8️⃣ 彩蛋:一行打印所有内置类型名📜

import builtins
print([name for name, obj in vars(builtins).items()
       if isinstance(obj, type) and not name.startswith('_')])

🏁 口诀总结(背它!)

“不可变:int float bool str bytes tuple
可变:list bytearray dict set
**映射 dict 有序快,集合 set 去重嗨,None 空值默认在!”**🎵