如何从列表中删除每个子列表的所有出现
如何从列表中删除每个子列表的所有出现
我有两个列表:
big_list = [2, 1, 2, 3, 1, 2, 4] sub_list = [1, 2]
我想从big_list中删除所有的sub_list出现。
结果应该是[2, 3, 4]
对于字符串,你可以使用这个:
'2123124'.replace('12', '')
但据我所知,这不能用于列表。
这不是从列表中删除子列表的重复,因为我想从big_list中删除所有的子列表。在其他问题中,结果应该是[5,6,7,1,2,3,4]
。
更新:为了简单起见,我在这个例子中使用了整数。但是列表项可以是任意对象。
更新2:
如果big_list = [1, 2, 1, 2, 1]
和sub_list = [1, 2, 1]
,
我希望结果是[2, 1]
(就像'12121'.replace('121', '')
)
更新3:
我不喜欢从StackOverflow中复制粘贴源代码到我的代码中。这就是为什么我在software-recommendations创建了第二个问题:https://softwarerecs.stackexchange.com/questions/51273/library-to-remove-every-occurrence-of-sub-list-from-list-python
更新4:如果你知道一个库可以通过一个方法调用来实现这个功能,请将其写成答案,因为这是我首选的解决方案。
测试应该通过这个测试:
def test_remove_sub_list(self): self.assertEqual([1, 2, 3], remove_sub_list([1, 2, 3], [])) self.assertEqual([1, 2, 3], remove_sub_list([1, 2, 3], [4])) self.assertEqual([1, 3], remove_sub_list([1, 2, 3], [2])) self.assertEqual([1, 2], remove_sub_list([1, 1, 2, 2], [1, 2])) self.assertEquals([2, 1], remove_sub_list([1, 2, 1, 2, 1], [1, 2, 1])) self.assertEqual([], remove_sub_list([1, 2, 1, 2, 1, 2], [1, 2]))