python - 如何删除列表中的所有项目在 Python 3 中的另一个列表中?
问题描述
我正在尝试编写一个将两个列表作为输入的函数:def array_diff(a, b):
. 在此函数中,我想返回一个已过滤的a
列表,该列表将删除所有也存在于 list 中的项目b
。它将这样工作:
array_diff([1,2],[1]) == [2]
或者:
array_diff([1,2,2,2,3],[2]) == [1,3]
我写了以下代码:
def array_diff(a, b):
for i in a:
if i in b:
a.remove(i)
return a
但是,即使我没有收到任何错误,当我尝试运行此函数并且 lista
有两个具有相同值的项目,并且它存在于 list 中b
时,它也无法正确过滤它。我不确定为什么会发生这种情况,但我也已经尝试过使用a.pop(i)
,但也没有用。我也尝试用 迭代列表for i in range(len(a))
,但我收到错误说我遍历了列表的索引。
希望你能帮助我,谢谢!
解决方案
Use the filter
function to filter out any items present in both lists like this:
def array_diff(a, b):
return list(filter(lambda item: item not in ls2, ls1))
ls1 = [1, 2, 3, 4, 5]
ls2 = [2, 5]
print(array_diff(ls1, ls2))
推荐阅读
- arrays - 如何在函数中使用numpy数组
- python-3.x - Python“root.after(1000, my_test)”。它每秒循环一次,但两次
- c# - Xamarin.Forms - 视频加载时使 ActivityIndicator 消失
- javascript - 如何在 Electron 中实现与 Node.JS 和 JQuery 函数兼容的多线程?
- javascript - HTML 表单无法使用 jQuery 验证插件进行验证
- python - 从列表中划分字母数字单词并存储为字典的键值对
- c# - MVC 5 控制器返回 PDF 文件不起作用
- c# - Xceed Docx 返回空白文档
- sql - 从多连接中选择具有最新日期的行
- postgresql - PostgreSQL:是否有用于将数据从数据库插入到另一个数据库的查询或脚本?