Posted on Jul 20, 2025· Updated on Jul 20, 2025

Python数据类型详解:面向初学者的可视化指南

#python #beginner #data types
Image for Python数据类型详解:面向初学者的可视化指南

Python 附带九种核心数据类型,几乎涵盖了您所需的一切。选择正确的类型可以让您的代码更清晰、更快、更安全。本指南展示了每种类型的工作方式、何时使用它以及需要注意的事项。如需快速概览,请参阅我们的 基础指南

Python 内置数据类型类别和可变性的图示。

1. 数字 – int, float, complex

Python 有三种用于处理数字的类型,每种类型都针对不同的情况而设计。

先看基本示例

# 整数 - 完整的数字
age = 25
score = 100
negative = -10

# 浮点数 - 带小数点的数字
price = 19.99
temperature = 98.6
pi = 3.14159

# 复数 - 带有实部和虚部的数字(高级数学)
z = 2 + 3j  # j 在 Python 中代表虚数单位
类型典型字面值关键特征何时使用有用的方法/操作
int42, 0xFF可以大到内存允许的整数;支持二进制 0b、八进制 0o、十六进制 0x 字面值计数、索引、存储整数数量bit_length(), to_bytes()
float3.14, 1.2e3带小数点的数字;计算中可能存在小的舍入误差测量、平均值、科学计算.is_integer(), .hex(), math 模块
complex2+3j, complex(a,b)带有实部和虚部的数字(用于高级数学);.real, .imag, .conjugate()高级数学、工程、信号处理所有算术运算,abs() 返回模长

更多示例

# 处理整数
items = 5
total_items = items * 3  # 15

# 处理浮点数
radius = 2.5
area = 3.14159 * radius * radius  # 19.634...

# 小心浮点精度
result = 0.1 + 0.2  # 0.30000000000000004 (不完全是 0.3!)

# 复数(初学者可能不需要)
z = complex(2, 3)     # 与 2+3j 相同
magnitude = abs(z)    # 3.605...

2. 字符串 – str

字符串包含文本,是您将使用的最重要类型之一。有关更详细的字符串操作,请参阅我们的 操作字符串指南

基本示例

# 创建字符串
name = "Alice"
message = 'Hello world'
long_text = """这是一个
多行字符串"""

# 基本操作
greeting = "Hello, " + name  # "Hello, Alice"
repeated = "Ha" * 3          # "HaHaHa"
length = len(message)        # 11

关键特征:

  • 不可变:创建后不能更改(但可以创建新的)
  • 使用单引号 ' 或双引号 "
  • 使用三引号 """ 表示多行文本
  • 支持 Unicode(表情符号、国际字符)

常用字符串操作

text = "  Python Programming  "

# 有用的方法
clean_text = text.strip()           # "Python Programming"
words = clean_text.split()          # ["Python", "Programming"]
joined = "-".join(words)            # "Python-Programming"
upper_text = clean_text.upper()     # "PYTHON PROGRAMMING"
replaced = clean_text.replace("Python", "Java")  # "Java Programming"

# 检查内容
starts_with_p = clean_text.startswith("Python")  # True
has_gram = "gram" in clean_text                   # True

# 现代格式化(推荐)
age = 25
formatted = f"I am {age} years old"  # "I am 25 years old"

3. 布尔值 – bool

布尔值表示 True 或 False 值——对于在代码中做决策至关重要。了解有关 bool() 函数 的更多信息。

基本示例

# 简单的布尔值
is_student = True
is_graduated = False

# 布尔运算
has_degree = is_student or is_graduated  # True
ready_to_work = is_graduated and not is_student  # False

真值性 (Truthiness):在条件判断中,Python 将许多值视为 True 或 False:

# 这些是“真值” (表现得像 True)
if "hello":     # 非空字符串
if [1, 2, 3]:   # 非空列表
if 42:          # 非零数字

# 这些是“假值” (表现得像 False)
if "":          # 空字符串
if []:          # 空列表
if 0:           # 零
if None:        # None 值

实际示例

items = []
if items:
    print("We have items!")
else:
    print("No items found")  # 将打印此行

score = 85
passed = score >= 60  # True

4. None 类型 – NoneType

None 代表“无”或“没有值”——您会在 Python 的各个地方看到它。

基本示例

# 尚未赋值的变量
result = None
user_input = None

# 函数默认返回 None
def greet(name):
    print(f"Hello, {name}")

return_value = greet("Alice")  # return_value 是 None

# 检查 None
if result is None:
    print("No result yet")

# 常见模式:可选值
def find_user(username):
    # ... 搜索逻辑 ...
    if user_found:
        return user_data
    else:
        return None  # 未找到任何内容

重要提示:与 None 比较时,始终使用 isis not,而不是 ==

# 正确
if value is None:
    # 执行某操作

# 错误(但有效)
if value == None:
    # 执行某操作

5. 列表 – list

列表按顺序存储多个项目,并且允许您在创建后更改它们。有关全面的列表操作,请参阅我们的 列表和元组指南

基本示例

# 创建列表
fruits = ["apple", "banana", "orange"]
numbers = [1, 2, 3, 4, 5]
mixed = ["hello", 42, True, None]  # 列表可以包含不同类型
empty = []

# 访问项目(索引从 0 开始)
first_fruit = fruits[0]      # "apple"
last_fruit = fruits[-1]      # "orange"

常见操作

shopping_list = ["milk", "bread"]

# 添加项目
shopping_list.append("eggs")         # ["milk", "bread", "eggs"]
shopping_list.insert(0, "butter")    # ["butter", "milk", "bread", "eggs"]
shopping_list.extend(["cheese", "ham"])  # 添加多个项目

# 删除项目
shopping_list.remove("milk")         # 删除第一次出现的项
last_item = shopping_list.pop()      # 删除并返回最后一项
first_item = shopping_list.pop(0)    # 删除并返回第一项

# 有用的操作
length = len(shopping_list)
has_bread = "bread" in shopping_list

何时使用列表

  • 当您需要有序且可能发生变化的数据时
  • 逐项构建集合时
  • 当您需要按位置访问项目时
# 好的用例
grades = [85, 92, 78, 96]
todo_items = ["wash dishes", "walk dog", "study Python"]

# 处理列表
total = sum(grades)
average = total / len(grades)

for item in todo_items:
    print(f"Task: {item}")

6. 字典 – dict

字典以键值对的形式存储数据,就像真正的字典一样,您查找单词(键)以找到定义(值)。有关全面的字典操作,请参阅我们的 字典指南

基本示例

# 创建字典
person = {"name": "Alice", "age": 30, "city": "New York"}
grades = {"math": 85, "english": 92, "science": 78}
empty = {}

# 访问值
name = person["name"]        # "Alice"
age = person.get("age")      # 30 (更安全的方式)
height = person.get("height", "unknown")  # 如果键不存在则为 "unknown"

常见操作

student = {"name": "Bob", "grade": 85}

# 添加/更新值
student["age"] = 20           # 添加新的键值对
student["grade"] = 90         # 更新现有值

# 有用的方法
keys = student.keys()         # dict_keys(['name', 'grade', 'age'])
values = student.values()     # dict_values(['Bob', 90, 20])
items = student.items()       # dict_items([('name', 'Bob'), ...])

# 检查键是否存在
if "name" in student:
    print(f"Student name: {student['name']}")

# 删除项目
age = student.pop("age")      # 删除并返回值
student.pop("height", None)   # 安全删除(如果键不存在则不报错)

何时使用字典

  • 当您需要通过唯一标识符查找值时
  • 存储结构化数据(如记录)时
  • 计数时
  • 缓存/记忆化时
# 好的用例
inventory = {"apples": 50, "bananas": 30, "oranges": 25}
user_profile = {
    "username": "alice123",
    "email": "alice@example.com",
    "is_premium": True
}

# 计数示例
text = "hello world"
char_count = {}
for char in text:
    char_count[char] = char_count.get(char, 0) + 1
# 结果:{'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}

7. 元组 – tuple

元组类似于列表,但创建后不能更改。将它们视为“锁定”的列表。有关元组的更多信息,请参阅我们的 列表和元组指南

基本示例

# 创建元组
coordinates = (10, 20)
rgb_color = (255, 0, 128)
single_item = (42,)    # 单项元组注意逗号
empty = ()

# 通常可以省略括号
point = 5, 10          # 与 (5, 10) 相同
name_age = "Alice", 25 # 与 ("Alice", 25) 相同

# 访问项目(与列表相同)
x = coordinates[0]     # 10
y = coordinates[1]     # 20

元组解包

# 解包非常有用
point = (100, 200)
x, y = point          # x=100, y=200

# 交换值
a = 5
b = 10
a, b = b, a           # 现在 a=10, b=5

# 函数返回多个值
def get_name_age():
    return "Bob", 25

name, age = get_name_age()

何时使用元组

  • 当您有一个固定且不会更改的集合时
  • 从函数返回多个值时
  • 作为字典的键(因为它们是不可变的)
  • 表示坐标、RGB 值等
# 好的用例
WINDOW_SIZE = (800, 600)        # 常量
DEFAULT_COLOR = (255, 255, 255) # RGB 白色

# 带有元组键的字典
locations = {
    (0, 0): "origin",
    (1, 1): "northeast",
    (-1, -1): "southwest"
}

8. 集合 – set

集合存储唯一的项目,没有重复,也没有特定的顺序。非常适合成员资格测试和删除重复项。有关全面的集合操作,请参阅我们的 集合指南

基本示例

# 创建集合
colors = {"red", "green", "blue"}
numbers = {1, 2, 3, 4, 5}
empty = set()  # 注意:{} 创建空字典,而不是集合!

# 从列表创建(删除重复项)
mixed_list = [1, 2, 2, 3, 3, 3]
unique_numbers = set(mixed_list)  # {1, 2, 3}

常见操作

tags = {"python", "programming", "beginner"}

# 添加项目
tags.add("tutorial")
tags.update(["coding", "learning"])  # 添加多个项目

# 删除项目
tags.remove("beginner")     # 如果项目不存在则报错
tags.discard("advanced")    # 如果项目不存在则不报错

# 成员资格测试(非常快!)
if "python" in tags:
    print("This is about Python!")

# 集合运算
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union = set1 | set2         # {1, 2, 3, 4, 5}
intersection = set1 & set2   # {3}
difference = set1 - set2     # {1, 2}

何时使用集合

  • 从集合中删除重复项时
  • 进行快速成员资格测试时
  • 进行数学集合运算时
  • 跟踪唯一访问者、ID 等时
# 好的用例
unique_visitors = set()
unique_visitors.add("user123")
unique_visitors.add("user456")
unique_visitors.add("user123")  # 不会添加重复项
print(len(unique_visitors))     # 2

# 从列表中删除重复项
items = ["apple", "banana", "apple", "orange", "banana"]
unique_items = list(set(items))  # ['apple', 'banana', 'orange']

选择正确的类型——实际技巧

场景最佳类型原因
存储用户年龄int整数,不需要小数位
产品价格float需要小数位
用户登录状态bool简单的真/假值
用户的中间名(可能不存在)strNone可能是缺失的
购物车中的商品list有序,可以添加/删除项目
用户资料数据dict键值对(姓名、电子邮件等)
GPS 坐标tuple固定对,不会改变
唯一的产品类别set无重复项,查找速度快

可变性和可哈希性的速查表

类型可变?可哈希?可作为字典键?
int, float, complex
str
bool
None
tuple (包含不可变项)
list
dict
set

给初学者的关键要点

  1. 从简单开始:使用 int 表示整数,float 表示小数,str 表示文本,bool 表示真/假,None 表示“无值”。

  2. 集合的简化:当您需要更改内容时使用 list,当您不需要更改时使用 tuple,用于键值对时使用 dict,用于唯一项时使用 set

  3. 有疑问时:对于初学者来说,listdict 可以满足大多数集合需求。

  4. 通过简单示例练习,然后再转向复杂的用例。

  5. 请记住:Python 是宽容的——当需要时,您可以随时在兼容的类型之间进行转换。