python - 如何在 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 中完成类似的工作?
解决方案
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 会向您发出警告。
推荐阅读
- java - 在模块中发现重复的类 org.apache.http.HttpHeaders
- mysql - 创建表 mySql 语法错误(在其他版本上工作)
- php - libphonenumber、php 和 CI3 - 尝试验证电话号码但未获得预期结果
- python - 如何打印与重复键关联的所有值?
- swift - 无法将 segmentedControl 设置回未选择索引
- java - 如何从数据库中删除项目?
- ionic4 - 在ionic 4中上传时如何动态更新文件名
- git - Jekyll 没有更新所有文件
- ios - 在 Stackview 中设置项目的 ID
- android - Android如何将jar文件导入库模块?