Python数据类型

在本章节中,您将学习Python的各种数据类型,包括数字、字符串、列表、元组、字典和集合。 了解这些数据类型的特点和使用方法,是编写Python程序的重要基础。

数字类型

Python中的数字类型

Python支持整数(int)、浮点数(float)和复数(complex)三种数字类型。

# 整数(int)
age = 25
population = 1_000_000  # 使用下划线分隔数字,提高可读性

# 浮点数(float)
height = 1.75
pi = 3.14159

# 复数(complex)
c = 3 + 4j
print(c.real)    # 实部:3.0
print(c.imag)    # 虚部:4.0

# 类型转换
x = int(3.9)     # 结果:3
y = float(5)     # 结果:5.0
z = complex(2)   # 结果:2+0j

字符串

字符串是Python中最常用的数据类型之一,用于处理文本数据:

# 字符串创建
name = 'Python'
message = "Hello, World!"
paragraph = '''这是一个
多行字符串
示例'''

# 字符串操作
print(len(name))         # 长度:6
print(name[0])          # 索引:'P'
print(name[-1])         # 负索引:'n'
print(name[0:2])        # 切片:'Py'

# 字符串方法
text = "  Python编程  "
print(text.strip())     # 去除空白:'Python编程'
print(text.upper())     # 转大写:'  PYTHON编程  '
print(text.lower())     # 转小写:'  python编程  '
print(text.replace('Python', 'Java'))  # 替换:'  Java编程  '

# 字符串格式化
name = "小明"
age = 18
# f-string(推荐)
print(f"我叫{name},今年{age}岁")
# format方法
print("我叫{},今年{}岁".format(name, age))
# %运算符
print("我叫%s,今年%d岁" % (name, age))

注意:字符串是不可变类型,一旦创建就不能修改。所有的字符串操作都会返回一个新的字符串。

列表和元组

列表和元组的区别

列表是可变序列,可以修改其内容;元组是不可变序列,创建后不能修改。

列表(List)

# 创建列表
fruits = ['苹果', '香蕉', '橙子']
numbers = [1, 2, 3, 4, 5]
mixed = [1, '你好', 3.14, True]

# 列表操作
fruits.append('梨')     # 添加元素
fruits.insert(1, '草莓') # 插入元素
fruits.remove('香蕉')    # 删除元素
fruits.pop()           # 弹出最后一个元素
fruits.sort()          # 排序
fruits.reverse()       # 反转

# 列表切片
print(numbers[1:4])    # [2, 3, 4]
print(numbers[::-1])   # 反转:[5, 4, 3, 2, 1]

# 列表推导式
squares = [x**2 for x in range(5)]  # [0, 1, 4, 9, 16]

元组(Tuple)

# 创建元组
point = (3, 4)
coordinates = (1,)     # 单元素元组需要加逗号
rgb = (255, 128, 0)

# 元组操作
x, y = point          # 元组解包
print(len(rgb))       # 长度:3
print(rgb.count(255)) # 计数:1
print(rgb.index(128)) # 索引:1

# 元组的优势
# 1. 数据不可变,更安全
# 2. 性能更好
# 3. 可以作为字典的键

字典和集合

字典(Dictionary)

# 创建字典
student = {
    'name': '小明',
    'age': 18,
    'scores': {'语文': 90, '数学': 95}
}

# 字典操作
student['class'] = '一年级'  # 添加键值对
del student['age']         # 删除键值对
print(student.get('name')) # 获取值
print(student.keys())      # 所有键
print(student.values())    # 所有值
print(student.items())     # 所有键值对

# 字典推导式
squares = {x: x**2 for x in range(5)}

集合(Set)

# 创建集合
fruits = {'苹果', '香蕉', '橙子'}
numbers = set([1, 2, 2, 3, 3, 4])  # 自动去重

# 集合操作
fruits.add('梨')        # 添加元素
fruits.remove('香蕉')    # 删除元素
fruits.discard('梨')    # 安全删除(元素不存在不会报错)

# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b)  # 并集:{1, 2, 3, 4, 5}
print(a & b)  # 交集:{3}
print(a - b)  # 差集:{1, 2}
print(a ^ b)  # 对称差:{1, 2, 4, 5}

练习与实践

练习1:数据类型转换

创建一个程序,尝试以下转换:

  1. 将字符串转换为整数和浮点数
  2. 将列表转换为元组和集合
  3. 将字典的键和值分别转换为列表

练习2:数据结构应用

创建一个学生信息管理系统,要求:

  1. 使用字典存储学生信息(姓名、年龄、成绩等)
  2. 使用列表存储多个学生的信息
  3. 实现添加、查询、修改学生信息的功能

参考代码:

# 学生信息管理系统
students = []

def add_student(name, age, scores):
    student = {
        'name': name,
        'age': age,
        'scores': scores
    }
    students.append(student)

def find_student(name):
    return next((s for s in students if s['name'] == name), None)

# 使用示例
add_student('小明', 18, {'语文': 90, '数学': 95})
add_student('小红', 17, {'语文': 88, '数学': 92})
print(find_student('小明'))