Python 数据类型 “冷知识”:这些坑你踩过几个?

天天写 Python 代码,你真的懂列表、字典、字符串这些基础数据类型吗?这几个进阶偏基础的冷知识,帮你避开那些 "看似没问题,运行就翻车" 的坑!

1. 列表 sort() vs sorted():一个原地改,一个返新的

很多人分不清这两个排序方法,一不小心就把原列表改得面目全非!核心区别就一个:是否修改原列表

python 复制代码
nums = [3, 1, 4, 1, 5]

# sorted():返回新列表,原列表不变
new_nums = sorted(nums)
print(nums)      # [3, 1, 4, 1, 5] 原列表没动
print(new_nums)  # [1, 1, 3, 4, 5] 新列表是排序后的

# sort():原地排序,无返回值(返回 None)
result = nums.sort()
print(nums)      # [1, 1, 3, 4, 5] 原列表被改了
print(result)    # None 别想着接收返回值!

# 进阶:都支持 reverse 参数
print(sorted(nums, reverse=True))  # [5,4,3,1,1]

2. 字典的 "键" 有讲究:必须是不可变类型

字典的键(Key)不是随便什么都能当的!列表、集合这种可变类型不能当键,否则直接报错。

python 复制代码
# 合法:字符串、数字、元组(不可变类型)做键
valid_dict = {
    "name": "掘金",
    123: "数字键",
    (1, 2): "元组键"
}
print(valid_dict[(1,2)])  # 元组键能正常取值

# 非法:列表做键,直接报错
# invalid_dict = {[1,2]: "列表键"}  # TypeError: unhashable type: 'list'

# 小技巧:想存可变数据当"键"?转成元组就行
lst = [1,2,3]
dict_with_tuple_key = {tuple(lst): "对应值"}
print(dict_with_tuple_key[(1,2,3)])  # 正常输出:对应值

3. 字符串 strip():只删两端,不删中间

想去掉字符串里的空格?strip() 是常用方法,但你要记住:它只删除字符串开头和结尾的指定字符,中间的一概不动!

python 复制代码
s = "  hello world  "
# 不带参数:默认删两端的空格、换行符、制表符
print(s.strip())  # "hello world" 中间空格还在

s2 = "###python###"
# 带参数:删两端的指定字符(不是字符串,是字符集合)
print(s2.strip("#"))  # "python"

# 想删中间的字符?用 replace()
s3 = "he ll o"
print(s3.replace(" ", ""))  # "hello"

4. 元组不可变?但里面的可变元素可以改!

元组(tuple)号称 "不可变序列",但这指的是元组的元素个数和元素的内存地址不能改------ 如果元组里装了列表这种可变元素,列表内部是可以修改的!

python 复制代码
# 元组里套列表
tup = (1, 2, [3, 4])
# tup[0] = 100  # 报错!元组元素本身不能改
tup[2].append(5)  # 改元组里的列表,完全可以!
print(tup)  # (1, 2, [3, 4, 5])

小总结

  1. 排序用 sorted() 保原列表,用 sort() 要谨慎;
  2. 字典键必须是不可变类型,可变类型转元组再用;
  3. strip() 只清两端字符,中间的用 replace()
  4. 元组 "不可变" 是指元素地址不变,内部可变元素能改。
相关推荐
想会飞的蒲公英3 小时前
计算机怎样读取中文文本:编码、清洗与标准化
人工智能·python·自然语言处理
SeaTunnel4 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
深度研习笔记4 小时前
OpenCV工业视觉实战09|项目EXE打包+工控机无环境部署+后台常驻运行,彻底脱离Python环境,完成项目最终交付
python·opencv·webpack
CCPC不拿奖不改名4 小时前
大模型推理架构与开源生态知识整理
数据库·windows·python·架构·langchain·开源·github
Marst Code5 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
databook5 小时前
当散点图不够用时:用 t-SNE 可视化多维数据
python·数据分析·数据可视化
我的xiaodoujiao7 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
weixin_408099678 小时前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
去码头整点薯条ing8 小时前
某当网登录滑块【协议+OCR】
爬虫·python·ocr
赶紧写完去睡觉9 小时前
Anaconda 创建虚拟环境与使用
python·pycharm·conda