python - 要从另一个列表中找到的列表中删除一个值?
问题描述
在 python 中, remove() 应该删除列表中第一次出现的值。我尝试了下面的代码,但是它并没有从列表 a 中删除在列表 b 中找到的所有值。我的代码有什么问题吗?
def array_diff(a,b):
for i in a:
if i in b:
a.remove(i)
return a
例如,当它只应该打印 [1, 3] 时,它会打印出 [1, 2, 3]
print(array_diff([1,2,2,2,3],[2]))
> [1, 2, 3]
附加说明:我知道一个较短的版本(如下所示)可以正常工作,但我想知道我上面的代码有什么问题?谢谢!!!
def array_diff(a, b):
a = list(i for i in a if i not in b)
return a
解决方案
我决定不删除只是为您返回新列表:
def array_diff(a,b):
new = []
for i in a:
if i not in b:
new.append(i)
return new
print(array_diff([1,2,2,2,3],[2]))
def array_diff2(a,b):
return [i for i in a if i not in b]
print(array_diff([1,2,2,2,3],[2]))
推荐阅读
- ruby - 有没有办法改变小提琴的工作目录?
- plsql - 需要删除/插入该表中的相应行,因为出现重复数据-PLSQL
- javascript - 使用 Java 和 Typescript 进行 AES 加密/解密
- google-cloud-platform - 如何指定多个 shell 脚本作为 Dataproc 集群创建的初始化操作?
- java - 泛型类的泛型构造函数
- c - 检查输入的字符串是否包含数字的函数的问题
- python - 检索类实例中的嵌套字典
- c# - 在 c# 代码中将引号传递给 powershell 脚本不起作用
- tensorflow - 从我的硬盘加载数据集的python代码是什么
- nginx - Nginx - 配置路由到单页应用程序