零基础吃透Python六大基础+四大容器数据类型

简介: 本文用“书房整理”比喻讲解Python数据类型:基础类型(整数、浮点数等)是“书”,列表、元组、字典、集合则是不同设计的“书架”。通过对比特性与适用场景,清晰阐释六种基础类型和四大容器的本质区别与选用逻辑,助初学者建立直观认知。(239字)

免费编程软件「python+pycharm」

链接:https://pan.quark.cn/s/48a86be2fdc0

从整理书房说起

我有个朋友最近在学Python,他问我一个问题:

"整数、浮点数、字符串这些我能理解,但列表、元组、字典、集合到底是干嘛用的?为什么要分这么多种?"

我想了想,跟他说:"你整理过书房吗?"

他愣了一下:"整理过啊,把书分类放。"

"那就是了。整数、浮点数这些是'书',列表、字典这些是'书架'。书的种类有限,但书架的设计各有不同——有的按顺序排列,有的可以随意抽放,有的带标签分类。"

他恍然大悟:"原来如此!"

今天我们就用这个"书和书架"的比喻,把Python里的基础数据类型和容器数据类型一次性说清楚。

代理 IP 使用小技巧 让你的数据抓取效率翻倍 (29).png


第一部分:六大基础数据类型(单本书)

基础数据类型就像是单本书。每一本都有自己的特点和用途。

1. 整数(int)——页码和数量

整数就是不带小数点的数:-2042999

age = 25
count = -3
year = 2024

整数在Python里没有大小限制。你可以写一个1000位的整数,Python照样能处理(虽然会慢一点)。

huge = 10 ** 100  # 1后面100个0,完全没问题

什么时候用它? 计数、索引、循环次数、年龄、数量——一切不需要小数的数字。

2. 浮点数(float)——带小数的测量值

浮点数就是带小数点的数:3.14-0.52.0

price = 99.9
pi = 3.1415926
temperature = -5.5

需要注意:浮点数在计算机里是近似存储的0.1 + 0.2 == 0.3 的结果是False,因为0.1+0.2实际上是0.30000000000000004

print(0.1 + 0.2)  # 0.30000000000000004

如果要做精确的金额计算,用decimal.Decimal,别用浮点数。

什么时候用它? 价格、测量值、科学计算——一切需要小数的地方。

3. 布尔值(bool)——真与假

布尔值只有两个:TrueFalse

is_login = True
is_admin = False
has_permission = 5 > 3  # True

在Python里,布尔值其实是整数(True是1,False是0),但不要依赖这个特性——它会让代码变得难懂。

# 可以这样写,但别这样写
result = True + False  # 1

什么时候用它? 条件判断、开关控制、标志位——一切需要"是/否"的地方。

4. 字符串(str)——文本内容

字符串就是文本,用引号包起来。

name = "张三"
message = '你好'
multiline = """第一行
第二行
第三行"""

字符串的常见操作:

s = "hello world"
print(len(s))        # 11,长度
print(s.upper())     # HELLO WORLD,大写
print(s.split())     # ['hello', 'world'],分割
print(s[0])          # h,取第一个字符
print(s[6:11])       # world,切片

字符串在Python里是不可变的——你不能修改字符串里的某个字符,只能创建新字符串。

s = "hello"
# s[0] = "H"  # 报错!
s = "H" + s[1:]  # 创建新字符串 "Hello"

什么时候用它? 所有的文本处理——用户输入、文件内容、数据库字段、API返回数据。

5. 字节(bytes)——二进制数据

字节是计算机最底层的表示方式,由0255的数字组成。

b = b"hello"          # 直接创建
b = bytes([72, 101])  # 从列表创建,代表"He"

字符串和字节之间的转换很常用:

text = "你好"
byte_data = text.encode("utf-8")  # 字符串→字节
text_back = byte_data.decode("utf-8")  # 字节→字符串

什么时候用它? 文件读写(非文本文件)、网络传输、加密解密——一切需要处理二进制数据的地方。

6. None——"什么都没有"

None表示"没有值",相当于其他语言的nullnil

result = None
data = function_that_might_fail()  # 如果失败返回None

if data is None:
   print("没有数据")

注意:判断是否为None要用is,不要用==

# 正确
if x is None:
   pass

# 不推荐
if x == None:
   pass

什么时候用它? 表示"无"、"空"、"未初始化"——一个占位符,说明这里暂时没有值。


第二部分:四大容器数据类型(书架)

容器就像书架,用来存放多本书(数据)。不同设计的书架,适合不同场景。

1. 列表(list)——按顺序排放的书架

列表是最常用的容器,用方括号表示,有序、可变

fruits = ["苹果", "香蕉", "橙子"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]  # 可以混放不同类型

列表的常见操作:

fruits = ["苹果", "香蕉", "橙子"]

# 增
fruits.append("葡萄")      # 末尾添加
fruits.insert(1, "草莓")   # 指定位置插入

# 删
fruits.remove("香蕉")      # 删除指定元素
last = fruits.pop()        # 删除并返回最后一个

# 改
fruits[0] = "芒果"         # 修改指定位置

# 查
print(fruits[0])           # 取第一个
print(fruits[-1])          # 取最后一个
print(fruits[1:3])         # 切片,取第1到第2个

# 遍历
for fruit in fruits:
   print(fruit)

列表推导式(Python的特色写法):

# 传统写法
squares = []
for i in range(10):
   squares.append(i**2)

# 列表推导式(更Pythonic)
squares = [i**2 for i in range(10)]

# 带条件
even_squares = [i**2 for i in range(10) if i % 2 == 0]

什么时候用列表? 你需要保持顺序、允许重复元素、随时增删改。比如:待办事项列表、排行榜、购物车。

2. 元组(tuple)——不能修改的列表

元组用圆括号表示,有序、不可变

point = (10, 20)
rgb = (255, 0, 128)
person = ("张三", 25, "北京")
single = (5,)  # 单个元素必须加逗号

元组和列表的区别:元组创建后不能修改

point = (10, 20)
# point[0] = 5  # 报错!不能修改

为什么需要元组?

  • 数据不该被修改时(比如坐标、配置),用元组更安全
  • 元组占用的内存比列表小
  • 元组可以作为字典的键,列表不行

location = (39.9, 116.4)  # 经纬度,不应该被修改

# 元组作为字典键
cache = {}
cache[(1, 2)] = "value"  # 合法
# cache[[1, 2]] = "value"  # 报错,列表不能当键

元组的解包(拆包)很方便:

point = (10, 20)
x, y = point  # x=10, y=20

# 交换变量本质上就是元组解包
a, b = b, a

什么时候用元组? 数据不需要修改、想保护数据不被意外修改、需要作为字典键

3. 字典(dict)——带标签的抽屉

字典用花括号表示,键值对存储、可变、无序(Python 3.7之后保持插入顺序)。

person = {
   "name": "张三",
   "age": 25,
   "city": "北京"
}

# 或者用dict()创建
person = dict(name="张三", age=25, city="北京")

字典的常见操作:

# 增/改
person["job"] = "工程师"   # 新增
person["age"] = 26        # 修改

# 删
del person["city"]        # 删除键值对
age = person.pop("age")   # 删除并返回值

# 查
print(person["name"])     # 取值(键不存在会报错)
print(person.get("name")) # 取值(键不存在返回None)
print(person.get("email", "无"))  # 不存在时返回默认值

# 遍历
for key in person:
   print(key, person[key])

for key, value in person.items():
   print(key, value)

字典的键必须是不可变类型(字符串、整数、浮点数、元组),值可以是任意类型。

# 键不可变
d = {
   "name": "张三",      # 字符串做键 ✅
   1: "一",            # 整数做键 ✅
   (1, 2): "坐标",      # 元组做键 ✅
   # [1, 2]: "列表"    # 列表做键 ❌
}

字典推导式:

squares = {i: i**2 for i in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

什么时候用字典? 需要通过键名来查找数据、键值对结构天然匹配你的数据。比如:用户信息(通过用户名查详情)、配置参数(通过参数名查值)。

4. 集合(set)——只关心"在不在"

集合用花括号表示,无序、元素唯一、可变

fruits = {"苹果", "香蕉", "橙子"}
numbers = {1, 2, 3, 3, 4}  # 自动去重,变成{1, 2, 3, 4}

集合的核心操作:

s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}

# 增
s1.add(5)

# 删
s1.remove(1)     # 删除(不存在会报错)
s1.discard(10)   # 删除(不存在不报错)

# 集合运算
print(s1 | s2)   # 并集 {1,2,3,4,5,6}
print(s1 & s2)   # 交集 {3,4}
print(s1 - s2)   # 差集 {1,2}
print(s1 ^ s2)   # 对称差集 {1,2,5,6}

判断元素是否存在非常快(哈希查找,O(1)复杂度):

huge_list = list(range(1000000))
huge_set = set(huge_list)

# 集合查找速度快得多
print(999999 in huge_set)   # 瞬间完成

什么时候用集合? 去重、成员关系判断(某个元素是否存在)、集合运算(交集、并集)。


第三部分:类型转换——在不同书架之间搬运书

Python提供了内置函数来转换类型:

# 转整数
int("123")      # 123
int("12.5")     # 报错,字符串必须是纯数字

# 转浮点数
float("3.14")   # 3.14
float(5)        # 5.0

# 转字符串
str(123)        # "123"
str(3.14)       # "3.14"

# 转列表
list("hello")   # ['h', 'e', 'l', 'l', 'o']
list((1, 2, 3)) # [1, 2, 3]

# 转元组
tuple([1, 2, 3])  # (1, 2, 3)

# 转字典
dict([("a", 1), ("b", 2)])  # {'a': 1, 'b': 2}

# 转集合
set([1, 2, 2, 3])  # {1, 2, 3} 自动去重


第四部分:一张表格总结

类型 写法 有序 可变 元素唯一 用途
整数 42 - - - 计数、索引
浮点数 3.14 - - - 测量、价格
布尔值 True/False - - - 条件判断
字符串 "hello" - 文本
字节 b"hello" - 二进制数据
None None - - - 空值占位
列表 [1,2,3] 有序可变序列
元组 (1,2,3) 不可变序列
字典 {"a":1} ✅(3.7+) 键唯一 键值对查找
集合 {1,2,3} 去重、成员判断

最后一句总结

  • 基础类型:整数(数量)、浮点数(测量)、布尔(真/假)、字符串(文本)、字节(二进制)、None(空)
  • 列表:需要顺序排列、随时修改 → 用列表
  • 元组:顺序排列、不该修改 → 用元组
  • 字典:需要按名字查找 → 用字典
  • 集合:只关心在不在、要去重 → 用集合

下次你写代码时,先想清楚数据是什么"书",需要放在哪种"书架"上。选对了容器,代码自然就顺了。

目录
相关文章
|
14天前
|
运维 监控 Java
安卓手机群控系统搭建全攻略:ADB+Python实现一台电脑管理几十部手机实操教程
本文围绕安卓手机群控系统的落地实现展开,基于谷歌原生ADB调试协议,结合Python语言完成整套群控框架的代码开发,无需额外专用硬件,详细讲解从环境搭建、设备批量连接、核心触控模块封装、并发批量操作到屏幕投射、设备状态监控的全流程实现方法。文章附带超1700行完整可运行源码,演示如何用一台普通电脑稳定管控几十部安卓设备,适合移动应用测试、批量设备运维场景的开发者参考,所有方案均经过实际多设备环境验证。
|
14天前
|
存储 弹性计算 人工智能
2026年阿里云服务器配置价格表(轻量、ECS、GPU)
2026年阿里云服务器价格体系覆盖轻量应用服务器、ECS云服务器、GPU计算型服务器三大核心品类,针对个人开发者、中小企业、企业级用户推出差异化配置与定价方案,同时提供包年包月、按量付费两种主流计费模式,新老用户均有专属优惠,整体价格透明且适配不同业务场景。以下从三大产品维度,详细梳理2026年阿里云服务器配置与价格明细,覆盖入门到高端全场景需求。
396 0
|
存储 JSON 大数据
大数据离线数仓---金融审批数仓
大数据离线数仓---金融审批数仓
1179 1
|
2月前
|
存储 人工智能 NoSQL
看 AgentRun 如何玩转记忆存储,最佳实践来了!
AgentRun 基于 Tablestore 提供三类记忆能力:会话历史(单轮上下文)、长期记忆(跨会话向量化存储用户偏好)和会话状态(元数据持久化),支持控制台配置与 SDK/LangChain 等多框架集成,实现真正连续的智能对话体验。
|
存储 算法 Python
一文速学-时间序列分析算法之指数平滑法详解+Python代码实现
一文速学-时间序列分析算法之指数平滑法详解+Python代码实现
3560 0
一文速学-时间序列分析算法之指数平滑法详解+Python代码实现
|
8月前
|
存储 人工智能 Cloud Native
【2025云栖大会】AI原生搜索引擎:Elasticsearch 换“芯”
9月26日,云栖大会AI搜索与向量引擎分论坛上,阿里云智能集团技术专家 魏子珺 和爱橙科技技术专家 周文喆,详细阐释了 “AI 原生搜索引擎:Elasticsearch 换芯” 技术主题,重点围绕 AI 原生搜索内核增强技术的升级与替换。通过核心能力重构,让 Elasticsearch 在 AI 原生时代具备更强的多模态理解、自然语言处理以及深度任务执行能力,为搜索场景带来性能、智能化与可扩展性的大幅提升。
714 0
|
文字识别 算法 API
视觉智能开放平台产品使用合集之uniapp框架如何使用阿里云金融级人脸识别
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
630 0
|
机器学习/深度学习 并行计算 PyTorch
图像检测【YOLOv5】——深度学习
Anaconda的安装配置:(Anaconda是一个开源的Python发行版本,包括Conda、Python以及很多安装好的工具包,比如:numpy,pandas等,其中conda是一个开源包和环境管理器,可以用于在同一个电脑上安装不同版本的软件包,并且可以在不同环境之间切换,是深度学习的必备平台。) 一.Anaconda安装配置. 1.首先进入官网:https://repo.anaconda.com,选择View All Installers. 2.打开看到的界面是Anaconda的所以安装包版本,Anaconda3就代表是Python3版本,后面跟的是发行日期,我选择了最近的2022
341 26