【发布时间】:2019-07-29 17:34:37
【问题描述】:
我正在用 python3.6 编写游戏。棋盘上有一些pawn,它们是“pawn”类的实例。板上还有 巨石,它们是巨石类的实例。我只想将这些棋子和巨石存储在 array 中,例如 numpy.array。
我有两个问题:
数组中有不同类型的对象,这是 numpy.array 不可能的
如何在我的板上表示一个空单元格,因为我不能使用与其他对象类型不同的对象。
我该如何解决这两个问题?是否已经有一个对象可以表示网格、一个数组并接受不同的类型?
【问题讨论】:
-
为什么不只使用列表列表?
-
“我只想将这些棋子和巨石存储在一个数组中,例如 numpy.array。”但为什么?为什么要在这里使用
numpy.ndarray,它是用于保存类型化多维数组的专用数据结构?您可以使用结构化数组,但同样,为什么呢?使用普通的list和普通的 python 对象有什么好处?您是否试图用可能有数百万行/切片来表示 N 维棋盘? IOW,是的,已经有一个对象可以做到这一点,它被称为list -
列表列表的替代方法是字典。如果很多棋盘都是空的,那会更好。
-
请注意,您可以使用
numpy数组和dtype=object,但同样,为什么不在此时使用列表呢?一个 numpy dtype=object 数组基本上是一个不太有用的 pythonlist -
对于象棋大小的棋盘,存储效率不是问题。但显示和搜索效率仍然很重要。数组、对象或其他对象,适合显示,但不适合搜索。
标签: python arrays numpy types storage