python - 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
谁能解释为什么单个 char 比 int 大,但 20 个数组的大小与 20 个 int 相同?
在上述数组之一中实现游戏在性能方面有什么不同吗?这对人类玩家来说没有什么区别,但是,要训练人工智能,需要多次迭代,而且时间成为问题。
解决方案
推荐阅读
- javascript - 在 React Native 中创建我自己的菜单组件
- angular - 如何阻止匿名用户在公共站点上调用 REST WEB API?
- python - 在python中的其他函数中插入函数
- javascript - 为 Twilio Flex 创建自定义 WebChat 究竟需要什么?
- vega-lite - 如何更改区域标记的不透明度,或者具体来说,如何定义渐变色标的不透明度?
- javascript - 在 JavaScript 中为大于一千的数字添加逗号
- laravel - 不遵循如何在 laravel 中测试广播事件
- python - 我如何在 BeautifulSoup 类中获取文本
- docker - ECS 通过环境变量设置端口映射
- c# - 验证 SignalR Hub 和调用外部类函数的能力