The Python list container can be used for many practical things. In this somewhat light-hearted introspection of modern day politics we are looking at two lists and attempt to clear out elements that shouldn't be in both lists. No offense to anyone is intended, the outcome with the sets was a surprise to me.
Processing two Lists (Python)
# the government inner circle keeps two lists of countries
# one is the yeList of countries that pretty well go along with any adventure
# and the other list is the noList of countries that are not always with us
# let's assume these lists have gotten longer and some countries now appear in both lists
# you have to find which ones have dared to say no and remove them from the yeList
# tested with Python24 vegaseat 04jul2005
yeList = ['England','Italy','Portugal','Spain','Israel','Poland','Morocco','Japan','Danmark']
noList = ['China','Canada','Brazil','Germany','Iran','Spain','France','Russia','Turkey']
print "yeList =", yeList
print "noList =", noList
print
# since the original yeList would change, we are making a copy to use
# (note, an alias like yesList = yeList has the identical address and would change too)
yesList = yeList[:]
# using try and except ...
for country in yesList:
try:
# if found in noList remove from yesList
pos = noList.index(country)
print pos, country # test
yesList.remove(country)
except ValueError:
pass
print '-'*70
print "washed yesList =", yesList
print
# another way to do this, using filter() ...
yesList = yeList[:]
yesList = filter(lambda s: s not in noList, yesList)
print '-'*70
print "laundered yesList =", yesList
print
# yet another way to do it, using list comprehension ...
yesList = yeList[:]
yesList = [country for country in yesList if country not in noList]
print '-'*70
print "sanitary yesList =", yesList
print
# should one of the lists be very long, then it is efficient to convert it to a set ...
yesList = yeList[:]
noSet = set(noList)
yesList = [country for country in yesList if country not in noSet]
print '-'*70
print "immaculate yesList =", yesList
print
# fast algorithm, easy to comprehend, but changes the order ...
yeSet = set(yeList)
noSet = set(noList)
newyesSet = yeSet - noSet
print "the newyesSet =", newyesSet
vegaseat 1,735 DaniWeb's Hypocrite Team Colleague
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.