如何在Python中创建固定大小的对象列表(对比Java实现方式)
Python 固定大小对象列表实现方法
Python 原生的list类型是动态扩容的,没有内置和Java完全对等的固定大小数组语法,根据你的使用场景可以选择以下两种实现方案:
简易预分配方案(不需要严格限制长度修改)
如果只是需要预先分配指定长度的空间,后续不需要阻止append、pop等修改长度的操作,直接初始化填充占位值即可:
class ArrayClass: # 你的自定义类逻辑 pass # 创建长度为10的列表,初始填充None,后续可以逐个替换为ArrayClass实例 array_of_objects = [None] * 10 # 赋值方式和普通列表完全一致 array_of_objects[0] = ArrayClass()
严格固定长度方案(禁止修改列表长度)
如果需要完全模拟Java固定大小数组的特性,不允许增删元素、只能修改指定位置的值,可以自己封装一个简易的固定长度列表类:
class FixedSizeList: def __init__(self, size: int, default = None): self.__size = size self.__data = [default] * size def __getitem__(self, index: int): return self.__data[index] def __setitem__(self, index: int, value): if not 0 <= index < self.__size: raise IndexError(f"Index {index} out of bound, list size is {self.__size}") self.__data[index] = value def __len__(self) -> int: return self.__size # 禁用所有修改列表长度的方法 def append(self, *args, **kwargs): raise TypeError("FixedSizeList does not support append operation") def insert(self, *args, **kwargs): raise TypeError("FixedSizeList does not support insert operation") def pop(self, *args, **kwargs): raise TypeError("FixedSizeList does not support pop operation") def remove(self, *args, **kwargs): raise TypeError("FixedSizeList does not support remove operation")
使用示例:
# 初始化长度为10的固定大小列表 array_of_objects = FixedSizeList(10) # 合法操作:修改指定位置的元素 array_of_objects[2] = ArrayClass() # 非法操作:会直接抛出异常 array_of_objects.append(ArrayClass())
内容的提问来源于stack exchange,提问作者Malik123
相关产品推荐
相关产品推荐

