2016-06-14 27 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])