"placid" <[EMAIL PROTECTED]> writes: > >>> list1 = [ ' XXX1', 'XXX2', 'XXX3', 'XXX5'] > > the second list contains strings that are identical to the first list, > so lets say the second list contains the following > > >>> list1 = [ ' XXX1', 'XXX2', 'XXX3', 'XXX6']
I think you meant list2 for the second one. So: import re list1 = [ ' XXX1', 'XXX2', 'XXX3', 'XXX5'] list2 = [ ' XXX1', 'XXX2', 'XXX3', 'XXX6'] def num(s): # get the number out of one of the strings # (throw exception if no number is there) digits = re.search('\d+$', s) return int(digits.group(0)) def get_lowest_unused(list1, list2): prev = 0 for n in sorted(set(map(num,list1+list2))): if n != prev+1: return prev+1 prev = n print get_lowest_unused(list1, list2) You could do all this with iterators and save a little memory, but that's more confusing. -- http://mail.python.org/mailman/listinfo/python-list