List 一次删除Python列表中的多个元素
(使用Python 3) 给定名为numList的列表:[1,1,2,2,3,3,3,4]。 我只想从numList中删除“1”和“3”的一个实例。 换句话说,我需要一个将numList转换为:[1,2,2,3,3,4]的函数。 什么函数可以让我从Python列表中删除X个元素,每个元素都要删除一次? (我要删除的元素保证存在于列表中) 为了清楚起见,我将举更多的例子: [1,2,3,3,4] 拆下2和3 [1,3,4] [3,3,3] 删除3 [3,3] [1,1,2,2,3,4,4,4,4] 拆下2、3和4 [1,1,2,4,4,4] 我试过这样做: numList=[1,2,2,3,3,4,4] remList=[2,3,4] 对于remList中的x:List 一次删除Python列表中的多个元素,list,python-3.6,python-3.5,python-3.4,remove-method,List,Python 3.6,Python 3.5,Python 3.4,Remove Method,(使用Python 3) 给定名为numList的列表:[1,1,2,2,3,3,3,4]。 我只想从numList中删除“1”和“3”的一个实例。 换句话说,我需要一个将numList转换为:[1,2,2,3,3,4]的函数。 什么函数可以让我从Python列表中删除X个元素,每个元素都要删除一次? (我要删除的元素保证存在于列表中) 为了清楚起见,我将举更多的例子: [1,2,3,3,4] 拆下2和3 [1,3,4] [3,3,3] 删除3 [3,3] [1,1,2,2,3,4,4,4,4]
numList.remove(x)
这将numList转换为[1,2,3,4,4],这就是我想要的。然而,这具有以下复杂性:
O(len(numList))^(len(remList))
这是一个问题,因为remList和numList的长度可能为10^5。这个程序需要很长时间才能运行。是否有一个内置函数可以更快地实现我想要的功能
此外,我更喜欢在空间和时间方面能够完成这项工作的最佳函数,因为程序需要在不到一秒钟的时间内运行,而且列表的大小很大。您的方法:
for x in rem_list:
num_list.remove(x)
是直觉的,除非列表非常大,否则我可能会这样做,因为它很容易阅读
一个备选方案是:
result = []
for x in num_list:
if x in rem_list:
rem_list.remove(x)
else:
result.append(x)
这将是O(len(rem\u list)^len(num\u list)),如果len(rem\u list)如果rem_列表保证不包含任何重复项(根据您的示例),您可以使用集合来代替,复杂性将是O(len(num_列表))。
对于i in(2,3):numList.remove(i)
我添加了我对该问题的尝试。尽管它仍然是O(n^n)复杂性。在最坏的情况下,两个列表的长度相同(10^5)