The "user specified" part of your question is tricky. How does the user specify what they want in each column? Can they specify more than two columns? etc.
However, if you know you have 30 items, and you know that you want the 1st 15 in the first column and the next 15 in the 2nd column I believe the following will do the trick:
for i in xrange(15):
first = '(%s) %s' % (i, lst[i])
padding = ' ' * (30 - len(first))
second = '(%s) %s' % (i + 15, lst[i + 15])
print '%s%s%s' % (first, padding, second)