2014-03-02 41 views
0

比方說,我首先通過創建一個班級,變量爲self.memory = [None] * 10000。 現在我有一個文件的結構如下所示:列表生成器/閱讀文件和列表的理解

1 1231 
2 1231 
3 asdma 
4 landsl 

我想使發電機語句,將讀取該文件的每一行,並把它放在self.memory變量其指定的指數(左數) 。 這樣的陳述可能嗎?

編輯:加入我在用目前:

def AbsoluteLoader(self, f):                       
    with open(f, 'r') as assembly:                      
     for line in assembly:                       
      c = line.split()                       
      if int(c[0]) == -1:                      
      self.pc = long(c[1])                     
      break                         
      try:                          
      self.memory[int(c[0])] = long(c[1])                 
      except:                         
      print 'invalid' 
+1

爲什麼你認爲你需要一臺發電機聲明? –

+0

不一定「需要」一個,我只是覺得它會很好。 – corvid

+0

爲什麼不發佈你的代碼到目前爲止,並問一個關於它的問題? –

回答

0
class MyClass: 
    def __init__(self, fname, lines=10000): 
     self.pc = None 
     self.memory = mem = [0L] * lines 

     with open(fname) as inf: 
      for line in inf: 
       ndx, num = line.split() 
       ndx = int(ndx) 
       num = long(num) 
       try: 
        mem[ndx] = num 
       except IndexError: 
        if ndx == -1: 
         self.pc = num 
         break 
        else: 
         raise ValueError('invalid entry: {}'.format(line.rstrip('\r\n')))