如何删除列表中的特定行和列?

时间:2016-06-22 19:49:06

标签: python list

我需要一些提示。我有一个方形列表“y”(“y”有一个nxn大小)。这是一个例子:

y=[[20,30,35,40],
   [10,25,55,45],
   [15,39,19,59],
   [25,35,24,17]]

我有另一个列表“x”(“x”的大小为nx2)。这是一个例子:

x=[[1,1]
   [2,0]
   [3,0]
   [4,1]]

我想在列表中找到“x”(对于每一行)如果出现(在列表“x”的第二列中)数字“1”。如果数字“1”出现在列表“x”的第二列中,我想删除列表“y”中的相应行和相应列。在上面的例子中,在列表“x”中,数字“1”出现在列表“x”的第一行和四行中。然后我需要删除列表“y”中的相应行和列。

当列表“x”的第一行中出现“1”时(对于上面的示例),这是所需的列表“y”(我需要删除第一行并删除原始列表中的第一列“ y“):

   y=[[25,55,45],
       39,19,59],
       35,24,17]]

然后,因为“1”出现在列表“x”的第三行中(对于上面的示例),这是所需的列表“y”(我需要删除第三行并删除原始的第三列)列出“y”):

  y=[ [25,45]
      [35,17] 

非常感谢。

1 个答案:

答案 0 :(得分:1)

功能

def remove(a,i,j):
    return [row[:j] + row[j+1:] for k,row in enumerate(a) if k != i]

回答您所陈述的问题(“我如何从列表中删除特定的行和列”),尽管它仍然模糊了您要删除的行和列。

对于y,两行

>>> y = remove(y,0,0)
>>> y = remove(y,1,1)

结果

>>> y
[[25, 45], [35, 17]]

您只需要弄清楚如何迭代x并计算所需的索引(在这种情况下为01)。