Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 一次删除Python列表中的多个元素_List_Python 3.6_Python 3.5_Python 3.4_Remove Method - Fatal编程技术网

List 一次删除Python列表中的多个元素

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]

(使用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:

 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)