将您自己的对象存储在python中

时间:2018-04-21 19:47:30

标签: python

在阅读之前,请阅读this question

在链接的问题中,我问了创建类似列表对象的最快方法"它包含很多简单数据类型的变量。最好的答案告诉我使用array模块,它工作得非常好!以下是其工作原理的示例代码:

from array import array
a = array('i', (0,)) * 10 ** 8

但是现在我有一个问题......我不想只存储整数......我想存储我自己编写的类的实例。这个班可以是一个点''类:

class Point:
 def __init__(s, x, y):
  s.x = x
  s.y = y
 def dist_from_origin(s):
  return s.x ** 2 + s.y ** 2

如果我想为每个索引Point(0, 0)创建一个包含默认值的数组对象,该怎么办?那可能吗?如果没有,那么array对象的替代方案是否与它一样快? 请不要在答案中包含我可以做一个包含' x'值和另一个包含' y'因为这不是一个好的做法......

以下是我试图解决问题的方法:

from ctypes import Structure, c_int

class Point(Structure):
  _fields_ = [('x', c_int), ('y', c_int)]

p_arr = (Point * 10 ** 8)() # takes 0.5 sec (slow)

我的解决方案在代码中可能比使用array模块的解决方案(如果存在)更简单,但它非常慢。 在回答之前,请记住我的目标是拥有一个快速的解决方案,而不是一个漂亮的解决方案。

另外,我不允许使用任何外部模块(需要安装的模块),如numpy。

0 个答案:

没有答案