首页 > 解决方案 > 如何在 Python 中创建多维数组 typedef

问题描述

在 C++ 中,可以为 1D、2D 数组创建 typedef,然后使用它们来声明变量。

typedef char my2DDataArr[2][2];
typedef int my1DDataArr[10];

my2DDataArr arr2d_1= {{0,1},{2,3}};
my1DDataArr arr1d_1 = {1,2,3,4,5,6,7,8,9,10};

我怎样才能在 Python 中完成类似的工作?

标签: pythonc++arraystypedef

解决方案


Python 是强类型但动态类型的。这意味着您不需要让编译器知道变量将是什么类型 - 主要是因为没有编译 python 代码。

所以很明显你可以简单地做这样的事情:

my_list = [] # List that can contain other lists, could be 1D or nD        
initialized_list = [[1, 2], [2, 4]]

现在我写的列表可以包含其他列表。当您不定义变量的类型时,有些人不喜欢不确定性和缺乏可读性。为此,您确实有两种不同的解决方案:

import numpy as np
my_array = np.ndarray((2, 2)) # 2D Array
initialized_array = np.array([[1, 2], [2, 4]])

现在该符号对您来说应该更熟悉,因为它是一个二维数组。与列表不同,它可以并且将只有 2 个维度,总共 4 个元素 (2x2)。如果您不关心数组是不可变的和/或想要可变性,您可以使用type-hints

from typing import List
my_list: List[List[int]]
my_list = []

像这样写它表示它是一个包含整数列表的列表。大小仍然不受限制,但如果您开始将其他东西放入其中或将其设为 3 维,智能 IDE 会向您发出警告。


推荐阅读