上一篇
Python创建对象数组的完整教程 - 从入门到精通
- Python
- 2025-07-25
- 1554
Python创建对象数组的完整教程
在Python中,虽然没有内置的"数组"数据结构,但我们可以使用列表(list)来存储和操作对象集合。本教程将详细介绍如何创建自定义对象并存储为数组形式。
什么是对象数组?
对象数组是指包含多个同类对象的集合。在Python中,通常使用列表(list)来实现这种结构,例如:
# 创建一个包含学生对象的数组
students = [
Student("张三", 20, "计算机科学"),
Student("李四", 21, "数学"),
Student("王五", 19, "物理")
]
创建对象数组的步骤
1. 定义类(Class)
首先需要创建一个类来定义对象的属性和行为。下面是一个Student类的示例:
class Student:
def __init__(self, name, age, major):
self.name = name
self.age = age
self.major = major
def introduce(self):
return f"我叫{self.name},{self.age}岁,专业是{self.major}。"
2. 创建对象实例
使用类创建单个对象实例:
# 创建单个学生对象
student1 = Student("张三", 20, "计算机科学")
print(student1.introduce()) # 输出:我叫张三,20岁,专业是计算机科学。
3. 创建对象数组(列表)
将多个对象放入一个列表中创建对象数组:
# 创建学生对象数组
students = [
Student("张三", 20, "计算机科学"),
Student("李四", 21, "数学"),
Student("王五", 19, "物理"),
Student("赵六", 22, "化学"),
Student("钱七", 20, "生物学")
]
操作对象数组
遍历对象数组
使用for循环遍历数组中的每个对象:
# 遍历学生数组并调用方法
for student in students:
print(student.introduce())
# 输出:
# 我叫张三,20岁,专业是计算机科学。
# 我叫李四,21岁,专业是数学。
# ...
访问特定对象
通过索引访问数组中的特定对象:
# 访问第一个学生
first_student = students[0]
print(first_student.name) # 输出:张三
# 访问最后一个学生
last_student = students[-1]
print(last_student.major) # 输出:生物学
筛选对象
使用列表推导式筛选符合条件的对象:
# 找出所有20岁的学生
twenty_years_old = [s for s in students if s.age == 20]
print(f"20岁的学生有{len(twenty_years_old)}人") # 输出:20岁的学生有2人
排序对象数组
使用sorted()函数和lambda表达式对对象数组排序:
# 按年龄排序(从小到大)
students_sorted_by_age = sorted(students, key=lambda s: s.age)
# 按姓名排序(字母顺序)
students_sorted_by_name = sorted(students, key=lambda s: s.name)
完整示例代码
class Student:
def __init__(self, name, age, major):
self.name = name
self.age = age
self.major = major
def introduce(self):
return f"我叫{self.name},{self.age}岁,专业是{self.major}。"
# 创建学生对象数组
students = [
Student("张三", 20, "计算机科学"),
Student("李四", 21, "数学"),
Student("王五", 19, "物理"),
Student("赵六", 22, "化学"),
Student("钱七", 20, "生物学")
]
# 遍历并介绍所有学生
print("所有学生介绍:")
for student in students:
print(student.introduce())
# 找出数学专业的学生
math_students = [s for s in students if s.major == "数学"]
print(f"\n数学专业的学生有{len(math_students)}人")
# 按年龄排序
print("\n按年龄排序的学生:")
for student in sorted(students, key=lambda s: s.age):
print(f"{student.name} - {student.age}岁")
最佳实践和注意事项
- 使用有意义的类名:类名应使用大写开头的驼峰命名法(如Student)
- 初始化所有必要属性:在__init__方法中定义所有关键属性
- 考虑添加__str__方法:实现__str__方法可以自定义对象的字符串表示
- 使用列表推导式:对对象数组进行筛选和转换时,优先考虑列表推导式
- 考虑使用数据类(Python 3.7+):对于简单的数据结构,可以使用@dataclass装饰器简化类定义
使用数据类简化代码
Python 3.7+引入了数据类(dataclass),可以简化类的定义:
from dataclasses import dataclass
@dataclass
class Student:
name: str
age: int
major: str
def introduce(self):
return f"我叫{self.name},{self.age}岁,专业是{self.major}。"
# 使用方式与普通类相同
students = [
Student("张三", 20, "计算机科学"),
Student("李四", 21, "数学")
]
总结
在Python中创建对象数组主要涉及三个步骤:
- 定义类:创建对象的蓝图
- 实例化对象:根据类创建单个对象
- 创建列表:将多个对象放入列表中形成"对象数组"
对象数组的操作包括遍历、筛选、排序等,这些操作可以通过Python的列表功能和各种内置函数轻松实现。
本文由OuyangTaoTui于2025-07-25发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20256463.html
发表评论