python - 如果它们存在于列表 b 中,则从列表 a 中删除所有值
问题描述
def array_diff(a, b):
result = []
i = 0;
j = 0;
if (a[i] == b[j]):
a = a.remove(a[i]) #append() method in python adds a single item to the existing list
if i<len(a):
i+=1;
return a;
if j<len(b):
i+=1;
return a;
它应该从列表 a 中删除所有值,这些值存在于列表 b 中。如果我应该举个例子:
array_diff([1,2],[1]) == [2]
array_diff([1,2,2,2,3],[2]) == [1,3]
我对 Python 语言非常陌生,因此我将不胜感激。我做错了什么,我怎样才能让它变得更好?
我编辑:
def array_diff(a, b):
b=set(b)
for v in a:
if v in b:
a.remove(v)
return list(a)
但是,当 a 为 [1,2,2] 时,b 为 [2],预期为 [1]:它返回 [1, 2] 而它应该等于 [1]
解决方案
def diff(lst,lst2):
lst=set(lst)
for v in lst2:
if v in lst:
lst.remove(v)
return list(lst)
print(diff([1,2,3],[3,5,7,8]))
推荐阅读
- qt - QML以编程方式将ListView中的ExclusiveGroup设置为RadioButton
- mongodb - 如何在与子对象匹配的 where 子句中最好地获取 MongoDB [mongoos] 上的排序文档?
- mysql - 获取 mysql 中 2 个查询的计数差异
- javascript - 如何从 PHP 中保存 Javascript 变量信息
- r - 强制 cell_clicked 从预先指定的列返回值
- mysql - Mysql/MariaDB 触发问题和调试
- ffmpeg - ffmpeg 获取帧时间戳
- c# - 使用 TempData 从 MVC 操作将字符串值添加到 ViewBag 时出现问题
- javascript - 需要为小漫画制作网格
- ios - iOS - UITabBar 在显示启动 iOS 12.1 时出现故障