placid:

This may be a solution:

l1 = ['acXXX1', 'XXX2', 'wXXX3', 'kXXX5']
l2 = [ 'bXXX1', 'xXXX2', 'efXXX3', 'yXXX6', 'zZZZ9']

import re
findnum = re.compile(r"[0-9]+$")
s1 = set(int(findnum.search(el).group()) for el in l1)
s2 = set(int(findnum.search(el).group()) for el in l2)
nmax = max(max(s1), max(s2))
# XXXnmax is surely unavailable
missing = set(range(1, nmax)) - s1 - s2
print ["XXX%d" % i for i in sorted(missing)]

# Output: ['XXX4', 'XXX7', 'XXX8']

If you need more speed you can replace some of those sets (like the
range one) with fors.

Bye,
bearophile

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to