I';我想用Python创建一个记录数组(Pascal)。但是怎么做呢?
这是我的代码:I';我想用Python创建一个记录数组(Pascal)。但是怎么做呢?,python,data-structures,Python,Data Structures,这是我的代码: class typeE: def __init__(self): self.u = 0 self.v = 0 self.w = 0 def readData(): global n global m global e e = [typeE] c = -2 f = open(fi, 'r') for line in f: print e[0]
class typeE:
def __init__(self):
self.u = 0
self.v = 0
self.w = 0
def readData():
global n
global m
global e
e = [typeE]
c = -2
f = open(fi, 'r')
for line in f:
print e[0]
c += 1
ln = [int(i) for i in line.split()]
if c == -1:
n = ln[0]
m = ln[1]
else:
e[c].u = ln[0]
e[c].v = ln[1]
e[c].w = ln[2]
f.close()
你知道如何用Python制作这样的记录吗
type
typeE = record
u, v, w: longint;
end;
Python不是Pascal。您不创建“记录数组”,而是创建“对象列表”(可以是自定义类的实例,但在您的情况下也可以是普通的
dict
s)
此外,全局变量是一个坏主意,无论使用何种语言,最好使用真函数(根据输入返回结果的函数,而不是变异或重新绑定全局变量)
pythonic版本的代码(保留错误处理)如下所示:
class TypeE(object):
def __init__(self, u=0, v=0, w=0):
self.u = u
self.v = v
self.w = w
def __repr__(self):
return "<TypeE({u}, {v}, {w})>".format(**self.__dict__)
def to_int(line):
return [int(i) for i in line.strip().split()]
def read_data(src):
records = []
with open(src, 'r') as f:
headers = to_int(f.next())[:2]
for line in f:
records.append(TypeE(*ln[:3]))
return headers, records
def main():
(m,n), e = read_data("/path/to/your/file")
# now do something with m, n and e
print m, n, e
if __name__ == "__main__":
main()
类别类型(对象):
定义初始化(self,u=0,v=0,w=0):
self.u=u
自我评价,自我评价
self.w=w
定义报告(自我):
返回“”。格式(**自我记录)
def至_int(行):
返回[int(i)for i in line.strip().split()]
def读取数据(src):
记录=[]
打开(src,'r')作为f:
headers=to_int(f.next())[:2]
对于f中的行:
记录。追加(类型(*ln[:3]))
返回标题、记录
def main():
(m,n),e=读取数据(“/path/to/your/file”)
#现在用m,n和e做点什么
打印m,n,e
如果名称=“\uuuuu main\uuuuuuuu”:
main()
你的英语不是问题所在。你想达到什么目标?您希望如何处理此数据结构?fi
是一个文件名,在这种情况下用引号括起来,还是一个变量,在这种情况下它是未定义的。e=[type]
可能应该是e=[type()]
。要向列表中添加元素,请使用e.append(typeE())