Sometimes, you just want to take two lists like a previous one and a new one and get back information about what is new, what is old, and what is the same. Here is one way to do it.
def compareLists(old, new):
oldset = set(old)
addlist = [x for x in new if x not in oldset]
newset = set(new)
dellist = [x for x in old if x not in newset]
samelist = [x for x in old if x in newset]
return (addlist, dellist, samelist)
old = ['One', 'Two', 'Three', 'Four']
new = ['One', 'Two', 'Five']
(addlist, dellist, samelist) = compareLists(old, new)
print("addlist=", addlist)
print("dellist=", dellist)
print("samelist=", samelist)
what you get is:
('addlist=', ['Five'])
('dellist=', ['Three', 'Four'])
('samelist=', ['One', 'Two'])
With this, you can take “instantiation” action with the “add” list, take “removal” action with the “del” list, and simply update data with the “same” list.