首先 - 我假设您只是想在纯Python中完成这个任务,而不是使用C扩展。因此,我假设您已经将您感兴趣的不同记录加载到一组Python对象中,您的问题是您希望查看跨越这些对象的更高级别结构,并且这些结构在对象中分散到各个位置。
那么,您不能将每个记录简单地加载到字节数组类型中吗?然后,您可以使用Python数组的切片来创建一个新数组,其中仅包含您感兴趣的高级结构的数据。然后,您将拥有一个仅包含您感兴趣的数据的单个字节数组,并且可以以任何您想要的方式打印或操作它。
因此,类似于以下内容:
a = bytearray(b"Hello World")
b = bytearray(b"Stack Overflow")
complexStructure = bytearray(a[0:6]+b[0:])
print complexStructure
当然,您仍需知道高级结构在记录中的位置才能正确切割数组,但无论如何您都需要知道这一点。
编辑:
请注意,对列表进行切片并不会复制列表中的数据,它只是创建对数据的新引用集。
>>> a = [1,2,3]
>>> b = a[1:3]
>>> id(a[1])
140268972083088
>>> id(b[0])
140268972083088
然而,对列表b的更改不会改变a,因为b是一个新列表。如果要自动在原始列表中进行更改,则需要创建一个更复杂的对象,其中包含列表与原始记录,并以这样的方式隐藏它们,以便能够决定当用户查看复杂结构并尝试修改/查看列表及其元素时,需要更改或查看哪个列表和哪个列表元素。因此,可以考虑以下内容:
class ComplexStructure():
def add_records(self,record):
self.listofrecords.append(record)
def get_value(self,position):
listnum,posinlist = ...
return self.listofrecords[listnum][record]
def set_value(self,position,value):
listnum,posinlist = ...
self.listofrecords[listnum][record] = value
虽然这不是你所希望的简单方法,但它应该能够满足你的需求。