my code snippet follows..
oldlst=['jon','arya','ned','bran']
newlst=['jaime','jon','cersei']
newlyadded=set(newlst)-set(oldlst)
removed=set(oldlst)-set(newlst)
unchanged=set(oldlst)& set(newlst)
print '%d were newly added= %s'%(len(newlyadded),list(newlyadded))
print '%d were removed=%s'%(len(removed),list(removed))
print '%d were unchanged=%s'%(len(unchanged),list(unchanged))
this produces the output
--------------
2 were newly added= ['jaime', 'cersei']
3 were removed=['ned', 'arya', 'bran']
1 were unchanged=['jon']
Hi,
I guess for lists with unique items and order insignificant this is
just fine; you may also check difflib, if it suits your needs; there
are multiple comparing and displaying possibilities, e.g.:
>>> import difflib
>>> print "\n".join(difflib.unified_diff(['jon','arya','ned','bran'], ['jaime','jon','cersei']))
---
+++
@@ -1,4 +1,3 @@
+jaime
jon
-arya
-ned
-bran
+cersei
>>>
hth,
vbr
Except for the duplicate calls to set, this is fine. If order and
duplication are irrelevant (and hashability is guaranteed), use sets to
start with.