首页 > 解决方案 > Python中数组的大小与变量的大小

问题描述

在我的问题之前快速了解一下背景。我在重构俄罗斯方块游戏时遇到了这个问题。

可以通过以下方式表示俄罗斯方块(我将使用“L”形作为示例):

一个布尔数组:

boolShape = [False, False, False, False,
             False, True, True, False,
             False, False, True, False,
             False, False, True, False]

一个字符数组(我猜是“长度为 1 的字符串”,因为这是 Python):

charShape = ['.', '.', '.', '.',
             '.', 'X', 'X', '.',
             '.', '.', 'X', '.',
             '.', '.', 'X', '.']

一个整数数组:

intShape = [0, 0, 0, 0,
            0, 1, 1, 0,
            0, 0, 1, 0,
            0, 0, 1, 0]

一个 numpy 整数数组:

npShape = np.array([0, 0, 0, 0,
                    0, 1, 1, 0,
                    0, 0, 1, 0,
                    0, 0, 1, 0])

一个 numpy 布尔数组:

npBoolShape = np.array([0, 0, 0, 0,
                        0, 1, 1, 0,
                        0, 0, 1, 0,
                        0, 0, 1, 0], dtype=bool)

当我使用sys.getsizeof(array)andsys.getsizeof(array[i])来获取每个数组和单个元素的大小时,我得到以下信息:

Bool  | Array: 184 | Item: 24

Char  | Array: 184 | Item: 50

Int   | Array: 184 | Item: 24

NP    | Array: 224 | Item: 32

NPBool| Array: 112 | Item: 25
  1. 谁能解释为什么单个 char 比 int 大,但 20 个数组的大小与 20 个 int 相同?

  2. 在上述数组之一中实现游戏在性能方面有什么不同吗?这对人类玩家来说没有什么区别,但是,要训练人工智能,需要多次迭代,而且时间成为问题。

标签: pythonarraystypessize

解决方案


推荐阅读