python - 数据类型

Python 支持多种数据类型,分为 基本数据类型 (内置)和 复合数据类型(容器类型)。以下是 Python 主要数据类型的详细总结:


1. 基本数据类型(内置类型)

1.1 数值类型(Numbers)

  • int :整数(如 10, -5, 0)
  • float :浮点数(如 3.14, -0.001, 2.0)
  • complex :复数(如 1 + 2j)
  • bool :布尔值(True / False,是 int 的子类)
python 复制代码
a = 10       # int
b = 3.14     # float
c = 1 + 2j   # complex
d = True     # bool (True=1, False=0)

1.2 字符串(str)

  • 表示文本数据,用单引号 ' 或双引号 " 包裹。
  • 支持索引、切片、拼接、格式化等操作。
python 复制代码
s = "Hello, Python"
print(s[0])      # 'H'(索引)
print(s[7:13])   # 'Python'(切片)
print("Hi" + s)  # 'HiHello, Python'(拼接)

1.3 空值(None)

  • 表示"无"或"空",类似于其他语言的 ``。
python 复制代码
x = None
print(x)  # None

2. 复合数据类型(容器类型)

2.1 列表(list)

  • 可变 、有序的序列,支持混合类型。
  • 用方括号 [] 表示。
python 复制代码
nums = [1, 2, 3, "a", "b"]
nums[0] = 100  # 修改元素
nums.append(4) # 添加元素
print(nums)    # [100, 2, 3, 'a', 'b', 4]

2.2 元组(tuple)

  • 不可变 、有序 的序列,用圆括号 () 表示。
  • 比列表更轻量,适合存储常量数据。
python 复制代码
colors = ("red", "green", "blue")
print(colors[1])  # 'green'
# colors[1] = "yellow"  # 报错:元组不可修改

2.3 字典(dict)

  • 键值对(Key-Value) 存储,用花括号 {} 表示。
  • 键必须是不可变类型(如 str, int, tuple)。
python 复制代码
person = {"name": "Alice", "age": 25}
print(person["name"])  # 'Alice'
person["age"] = 26     # 修改值
person["city"] = "NY"  # 添加键值对

2.4 集合(set)

  • 无序 、不重复 的元素集合,用花括号 {} 或 set() 创建。
  • 支持交集 &、并集 |、差集 - 等操作。
python 复制代码
s = {1, 2, 3, 2}  # 自动去重:{1, 2, 3}
s.add(4)         # 添加元素
print(s)         # {1, 2, 3, 4}

2.5 字符串(str)

  • 虽然字符串是基本类型,但它也支持类似容器的操作(如索引、切片)。
python 复制代码
s = "hello"
print(s[1:4])  # 'ell'(切片)

3. 类型转换

Python 提供内置函数进行类型转换:

python 复制代码
# 数值转换
x = int("10")      # 字符串 → 整数
y = float("3.14")  # 字符串 → 浮点数
z = str(100)       # 整数 → 字符串
 
# 容器类型转换
lst = list((1, 2, 3))   # 元组 → 列表
tup = tuple([4, 5, 6])  # 列表 → 元组
s = set([1, 2, 2, 3])   # 列表 → 集合(去重)

4. 类型检查

使用 type() 或 isinstance() 检查数据类型:

python 复制代码
x = 10
print(type(x))          # <class 'int'>
print(isinstance(x, int))  # True

5. 总结

类型 分类 特点 示例
int 数值 整数 10, -5
float 数值 浮点数 3.14, -0.5
bool 数值 布尔值 True, False
str 序列 字符串 "hello"
list 序列 可变有序 [1, 2, "a"]
tuple 序列 不可变有序 (1, 2, "a")
dict 映射 键值对 {"name": "Alice"}
set 集合 无序不重复 {1, 2, 3}
None 特殊 空值 None

6. 扩展:可变 vs 不可变

  • 可变(Mutable) :list, dict, set(可修改内容)。
  • 不可变(Immutable) :int, float, str, tuple(创建后不能修改)。
python 复制代码
# 不可变示例(字符串不能直接修改)
s = "hello"
# s[0] = "H"  # 报错
s = "H" + s[1:]  # 重新赋值
 
# 可变示例(列表可以修改)
lst = [1, 2, 3]
lst[0] = 100  # 直接修改
相关推荐
benchmark_cc1 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
羲云网络4 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
橙橙笔记8 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
小小张说故事8 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
天天被压力10 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力10 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A10 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
小lo想吃棒棒糖11 小时前
把机器人训练从 GPU 搬到昇腾 NPU:启元 Q1 起身动作 PPO 训练全记录
python·机器人·昇腾·启元机器人
Thanks_ks11 小时前
【第 006 讲】搭建 PyCharm 开发环境:PyCharm 的下载与安装 | 初始设置与常用配置
ide·python·pycharm·开发工具·jetbrains·开发环境·集成开发环境
青少儿编程课堂12 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛