删除python中的数组元素

时间:2011-09-18 03:10:43

标签: python arrays elements

全部,我想从另一个数组中删除一个数组的特定数组元素。这是一个例子。数组虽然是一长串的单词。

A = ['at','in','the']
B = ['verification','at','done','on','theresa']

我想删除B中出现在A中的单词。

B = ['verification','done','theresa']

这是我到目前为止所尝试的内容

for word in A:
    for word in B:
        B = B.replace(word,"")

我收到错误:

  

AttributeError:'list'对象没有属性'replace'

我应该用它来获得它?

3 个答案:

答案 0 :(得分:3)

使用列表理解来获得完整的答案:

[x for x in B if x not in A]

但是,您可能想了解有关替换的更多信息,所以......

python list没有替换方法。如果您只想从列表中删除元素,请将相关切片设置为空列表。例如:

>>> print B
['verification', 'at', 'done', 'on', 'theresa']
>>> x=B.index('at')
>>> B[x:x+1] = []
>>> print B
['verification', 'done', 'on', 'theresa']

请注意,尝试使用值B[x]执行相同操作不会从列表中删除该元素。

答案 1 :(得分:3)

如果您可以删除B中的重复项并且不关心订单,则可以使用集合:

>>> A = ['at','in','the']
>>> B = ['verification','at','done','on','theresa']
>>> list(set(B).difference(A))
['on', 'done', 'theresa', 'verification']

在这种情况下,您将获得显着的加速,因为集合中的查找比列表中的更快。实际上,在这种情况下,A和B是更好的集合

答案 2 :(得分:1)

您也可以尝试从B中删除元素,例如:

A = ['at','in','the']
B = ['verification','at','done','on','theresa']
print B
for w in A:
    #since it can throw an exception if the word isn't in B
    try: B.remove(w)
    except: pass
print B