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

如何将二维数组(Two-dimensional Array)实现为类?求解决方案及解释

如何用类实现二维数组?

当然可以用类来封装二维数组!我结合你给出的示例代码,给你完善出一个可用的实现,再一步步解读细节:

核心思路

二维数组本质是「数组的数组」,所以我们的类不仅要记录行数、列数和默认值,还要实际创建对应的二维数据结构,同时提供安全的访问、修改方法。

完整实现代码

class TwoDimensionalArray:
    def __init__(self, rows=0, cols=0, default_val=0):
        self.rows = rows
        self.cols = cols
        # 用列表推导式初始化真正的二维数组结构
        self.array = [[default_val for _ in range(cols)] for _ in range(rows)]
    
    def get_element(self, row, col):
        # 先检查索引是否在合法范围内
        if 0 <= row < self.rows and 0 <= col < self.cols:
            return self.array[row][col]
        else:
            raise IndexError("行或列索引超出数组范围")
    
    def set_element(self, row, col, value):
        if 0 <= row < self.rows and 0 <= col < self.cols:
            self.array[row][col] = value
        else:
            raise IndexError("行或列索引超出数组范围")
    
    def print_array(self):
        # 友好打印数组内容
        for row in self.array:
            print(row)

代码解读

  1. __init__ 初始化方法
    你原来的示例只存储了row、col、el三个参数,但没有实际创建数组结构。这里我们用列表推导式[[default_val for _ in range(cols)] for _ in range(rows)]直接生成了一个rows行cols列的二维列表,每个元素默认值是default_val,这才是真正可用的二维数组载体。

  2. get_element 和 set_element 方法
    这两个方法是为了安全地访问和修改元素:加入了索引合法性检查,避免直接操作数组时出现越界报错,让代码更健壮。如果索引不合法,会抛出明确的IndexError提示。

  3. print_array 方法
    提供一个便捷的打印入口,不用每次都手动遍历数组,方便快速查看数组内容。

使用示例

# 创建一个3行4列、默认值为0的二维数组
my_array = TwoDimensionalArray(3, 4)
my_array.print_array()
# 输出:
# [0, 0, 0, 0]
# [0, 0, 0, 0]
# [0, 0, 0, 0]

# 修改指定位置的元素
my_array.set_element(1, 2, 5)
my_array.print_array()
# 输出:
# [0, 0, 0, 0]
# [0, 0, 5, 0]
# [0, 0, 0, 0]

# 获取指定位置的元素
print(my_array.get_element(1, 2))  # 输出:5

扩展优化(可选)

如果想让这个类更贴近原生列表的使用习惯,可以实现魔法方法,支持my_array[row][col]的直接操作:

def __getitem__(self, index):
    if isinstance(index, tuple) and len(index) == 2:
        row, col = index
        return self.get_element(row, col)
    # 如果只传一个索引,返回整行
    return self.array[index]

def __setitem__(self, index, value):
    if isinstance(index, tuple) and len(index) == 2:
        row, col = index
        self.set_element(row, col, value)
    # 如果只传一个索引,设置整行
    self.array[index] = value

现在你可以这样操作:

my_array[1, 2] = 10  # 等价于set_element(1,2,10)
print(my_array[1])   # 输出整行:[0, 0, 10, 0]

内容的提问来源于stack exchange,提问作者agon_isation

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:15:37