python 类对象数组
时间: 2025-07-01 11:01:26 浏览: 7
在 Python 中,处理类对象的数组主要依赖于列表(`list`)和 NumPy 的对象数组(`object` 类型数组)。这些结构可以存储任意类型的 Python 对象,包括自定义类的实例。以下是详细的操作方法:
### 创建包含类对象的数组
可以使用 Python 列表或 NumPy 的 `dtype=object` 数组来存储类实例。例如:
```python
import numpy as np
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 使用列表存储类实例
people_list = [Person("Alice", 30), Person("Bob", 25)]
# 使用 NumPy 对象数组存储类实例
people_array = np.array([Person("Alice", 30), Person("Bob", 25)], dtype=object)
```
### 访问和修改类对象数组中的元素
无论是列表还是对象数组,都可以通过索引访问或修改其中的类实例:
```python
# 访问列表中的类实例属性
print(people_list[0].name) # 输出: Alice
# 修改列表中的类实例
people_list[0] = Person("Eve", 28)
# 访问 NumPy 对象数组中的类实例属性
print(people_array[1].age) # 输出: 25
# 修改 NumPy 对象数组中的类实例
people_array[1] = Person("Dave", 35)
```
### 操作类对象数组
可以通过遍历、条件筛选等方式操作类对象数组:
```python
# 遍历列表并输出信息
for person in people_list:
print(f"Name: {person.name}, Age: {person.age}")
# 筛选年龄大于 30 的对象
older_people = [p for p in people_list if p.age > 30]
# 在 NumPy 对象数组中筛选符合条件的对象
older_people_np = people_array[np.array([p.age > 30 for p in people_array])]
```
### 内存管理与性能考量
NumPy 的对象数组虽然提供了灵活性,但由于每个元素都是独立的 Python 对象,因此内存管理和性能通常不如固定类型数组(如 `int` 或 `float` 类型的 NumPy 数组)[^1]。
### 示例代码
以下是一个完整的示例,展示如何创建、访问和操作类对象数组:
```python
import numpy as np
class Product:
def __init__(self, id, price):
self.id = id
self.price = price
# 创建列表和 NumPy 对象数组
products_list = [Product(101, 9.99), Product(102, 14.99)]
products_array = np.array([Product(101, 9.99), Product(102, 14.99)], dtype=object)
# 修改列表中的对象
products_list[0] = Product(103, 19.99)
# 修改 NumPy 对象数组中的对象
products_array[1] = Product(104, 24.99)
# 遍历列表并输出信息
for product in products_list:
print(f"ID: {product.id}, Price: ${product.price:.2f}")
```
###
阅读全文
相关推荐


















