我在元组/列表中存储了大量复杂数据,但更喜欢使用小包装类来使数据结构更容易理解,例如
class Person:
def __init__(self, first, last):
self.first = first
self.last = last
p = Person('foo', 'bar')
print(p.last)
...
Run Code Online (Sandbox Code Playgroud)
会优先于
p = ['foo', 'bar']
print(p[1])
...
Run Code Online (Sandbox Code Playgroud)
然而,似乎有一个可怕的内存开销:
l = [Person('foo', 'bar') for i in range(10000000)]
# ipython now taks 1.7 GB RAM
Run Code Online (Sandbox Code Playgroud)
和
del l
l = [('foo', 'bar') for i in range(10000000)]
# now just 118 MB RAM
Run Code Online (Sandbox Code Playgroud)
为什么?我有没有想到的任何明显的替代解决方案?
谢谢!
(我知道,在这个例子中,'wrapper'类看起来很傻.但是当数据变得更复杂和嵌套时,它会更有用)