全部,我想从另一个数组中删除一个数组的特定数组元素。这是一个例子。数组虽然是一长串的单词。
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'
我应该用它来获得它?
答案 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