从其他列表中删除列表项

2024-04-23 14:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,它接受一个列表列表和一个常规列表作为参数。基本上,这里的所有列表项都以一个唯一的数字开始。我希望第二个列表的第一个元素与第一个列表中每个单独列表的第一个元素进行测试,如果匹配,则从listo1中删除该列表。我举了一个根本不起作用的例子:

def deleteList(listo1, listo2):
    if (listo2 in listo1):
        listo1.remove(listo2)
        print(listo1)

def main():
    deleteList([[1000, 1],[2000, 2],[3000, 3]], [1000, 77])

所以我试着让listo2搜索listo1中任何以1000元素开头的元素。在这种情况下,它应该从listo1中删除第一个列表[1000,1]。我该怎么做?你知道吗


Tags: 函数in元素列表参数ifdef数字
2条回答

如果您只关心listo2中的第一个元素,您可以做如下操作:

def deleteList(listo1, listo2):
    for insidelist in listo1:
        if listo2[0] == insidelist[0]:
             listo1.remove(insidelist)
    print(listo1)

def main():
    deleteList([[1000, 1],[2000, 2],[3000, 3]], [1000, 77])

您可以使用列表理解作为过滤器,如下所示

def deleteList(listo1, listo2):
    return [item for item in listo1 if item[0] != listo2[0]]

print deleteList([[1000, 1],[2000, 2],[3000, 3]], [1000, 77])
# [[2000, 2], [3000, 3]]

如果你想做一个就地操作,你可以这样做

def deleteList(listo1, listo2):
    listo1[:] = [item for item in listo1 if item[0] != listo2[0]]

l1 = [[1000, 1],[2000, 2],[3000, 3]]
deleteList(l1, [1000, 77])
print l1
# [[2000, 2], [3000, 3]]

相关问题 更多 >