Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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
Python 删除列表中的元素_Python - Fatal编程技术网

Python 删除列表中的元素

Python 删除列表中的元素,python,Python,我有一个主列表,它重新组合了我的每个ID master = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 在所有这些ID中,我想排除其中一些。所以我做了第二个必须排除的ID列表 exclude = [1, 4, 5] 在您看来,拥有以下产品的良好运营方式是什么: master_exclude = [2, 3, 6, 7, 8, 9, 10] 如果你知道我的意思 谢谢大家! 此条件将起作用: master_exclude = [x for x in master if x

我有一个主列表,它重新组合了我的每个ID

master = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
在所有这些ID中,我想排除其中一些。所以我做了第二个必须排除的ID列表

exclude = [1, 4, 5]
在您看来,拥有以下产品的良好运营方式是什么:

master_exclude = [2, 3, 6, 7, 8, 9, 10]
如果你知道我的意思

谢谢大家!

此条件将起作用:

master_exclude = [x for x in master if x not in exclude]

如果涉及的列表较大,请考虑首先将<代码>排除< /代码>转换为<代码> SET>代码>,以便使包含检查更加性能:

exclude = set(exclude)

这将从
列表中删除该元素,该列表位于
排除

for i in exclude:
    master.remove(i)

不会删除重复项。

您可以使用简单的for循环执行类似操作

master = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

exclude = [1, 4, 5]

for o in exclude:
    try:
        master.remove(o)
    except ValueError:
        pass

print(master) # [2, 3, 6, 7, 8, 9, 10]

列表理解
无疑是正确的选择,但这也可以通过
过滤器
实现。这不是理想的解决方案,但却是另一种想法:

master_exclude = list(filter(lambda i: i not in exclude, master))
其中:

[2, 3, 6, 7, 8, 9, 10]

或者您可以使用
while
for loop

for i in exclude:
    while master.count(i) > 0:
        master.remove(i)

同样的结果。

在问这个问题之前你试过什么吗?@wwii谢谢!我也在搜索一个副本。OP没有做出任何努力。也许这是一个家庭作业。@ElisByberi:请给我看一个stackoverflow在组织家庭作业时有问题的链接/文本@DRPK我会同意ElisByberi的说法,OP没有表现出他自己的努力,一点也没有。我编程只是为了好玩!我正在学习Django框架,我有一个问题。@DRPK我不想,我也不能阻止你做别人的作业。做你想做的事。我有权表达我的意见。如果
exclude
的所有元素都属于
master
列表,那么就可以了。否则会导致
ValueError
。。。而
remove
是一个
O(N)
操作,它使得这种方法
O(N*M)
这就是为什么最好从头开始构建新列表。@SreeramTP同意!谢谢@谢天谢地!您回答了列表理解,因此..@schwobaseggl不会使用
列表理解
也就是
O(n*m)
,因为测试
不在
中仍然必须通过
排除
列表
。当然,这取决于
列表的相对大小。
…如果您设置
master=[1,1,1,2,3,4,5,6,7,8,9,10]
,那么运行此操作后,只有第一个
1
将被删除:
[1,1,2,3,6,7,8,9,10]
,感谢您指出了它!!