2016-06-14 59 views
0

我一直在教自己的python,目前我試圖循環訪問一個astropy表,並替換在第二列中具有特定值的任何行。我可以編寫一個完成此操作的腳本,但不是不使用虛擬索引來跟蹤我所處的行。循環遍歷表並刪除行而不使用對象索引

for value in my_list: 
    k=0 
    for row in data_table: 
     if value == row[1]: 
      data_table.remove_row(k) 
      data_table.add_row([replacement_row]) 
      k+=1 
     else: 
      k+=1 

什麼我不知道是是否存在有沒有row.index()屬性或類似的,將允許一些我寫

for value in my_list: 
    for row in data_table: 
     if value == row[1]: 
      data_table.remove_row(row.index()) 
      data_table.add_row([replacement_row]) 

原代碼我已經寫了沒有按」 t看起來是最pythonic的方式。

+0

是什麼類型'row'做些什麼呢?列表有一個你可以利用的'index'方法。順便說一句,從你正在迭代的東西中刪除(在迭代時改變形狀)通常是一個糟糕的想法。 –

+0

當我在for循環中運行print(type(row))'時,它打印出'。 – user144153

回答

0

有人向我指出,這可以使用enumerate()

for value in my_list: 
    for row in enumerate(data_table): 
     if value == row[1][1]: 
      data_table.remove_row(row[0]) 
      data_table.add_row([replacement_row])