【问题标题】:How to create multi-dimensional array typedef in Python如何在 Python 中创建多维数组 typedef
【发布时间】:2021-03-03 00:03:31
【问题描述】:

在 C++ 中,可以为一维、二维数组创建 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 c++ arrays typedef


【解决方案1】:

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 会向您发出警告。

【讨论】:

  • 可能值得注意的是类型提示只是 IDE 的提示,而不是由解释器强制执行
【解决方案2】:

Python 等价物是

arr2d_1 = [[0,1],[2,3]]
arr1d_1 = [1,2,3,4,5,6,7,8,9,10]

没有typedef,也不需要指定变量的类型。最多你可以这样做:

arr2d_1:list = [[0,1],[2,3]]
arr1d_1:list = [1,2,3,4,5,6,7,8,9,10]

但即便如此,:list 部分被称为type hint,这将有助于一些 IDE 进行重构,对解释器的要求并不严格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2010-09-23
    • 2014-02-26
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多