我需要一些提示。我有一个方形列表“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]
非常感谢。
答案 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
并计算所需的索引(在这种情况下为0
和1
)。