我有一个玩具Python项目,它涉及到模拟对象在网格中的移动.我的限制是:
- 这些对象是我自己任意定义的类
- 对象可以改变在网格上的位置
- 可以添加或删除对象
- 可以更新对象的属性
- 我必须遍历所有这样的对象
- 对象的大小可能不是微不足道的(相对于我的机器的能力)
- 对象必须能够"看到"网格上占用的空间(也就是说,网格必须可由所有对象访问)
对于我来说,在Python中存储此类对象最有效的数据类型/容器是什么?
我现在的 idea 是:
- 类型对象的Numpy数组-这似乎是最好的情况,因为我可以通过对象的位置引用它们,但我的理解是,Numpy并不是真正用于此用例的,可能不是特别有效.这样设置也不是特别直观.
- 用于对象的列表和用于共享位置更新的NumPy数组--这允许对对象进行干净的迭代,我可以在类属性内和NumPy数组上更新位置,但是要通过位置来具体引用对象并不容易
- 对象的字典和共享位置更新的NumPy数组-这将允许我通过位置(键)引用对象并更新主数组,以便共享这些更改的知识,但随后保留对象移动位置是奇怪的(我认为它们需要复制到新的键)
我觉得我可能错过了一些简单的东西,除非麻木网格真的是最好的 Select .