【问题标题】:Deleting all values from list a if they are present in list b [duplicate]如果列表b中存在,则从列表a中删除所有值[重复]
【发布时间】:2020-09-11 21:09:55
【问题描述】:
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]

【问题讨论】:

标签: python arrays function


【解决方案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]))

【讨论】:

  • 假设我们不知道数组里面有什么。而且我收到“名称'v'未定义”错误。为什么会这样?非常感谢。
  • 编辑:它不会删除重复项,解决了未定义的错误
  • 它是可执行代码...请再试一次..如果您无法获得解决方案...附上快照我会看到
  • 我已经编辑了代码,现在试试
  • 是的,现在除了重复没有问题。如何删除多个相同的变量?
猜你喜欢
  • 2021-10-28
  • 2016-10-25
  • 1970-01-01
  • 2016-04-24
  • 2016-02-13
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多