You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:09:05