Columnar display

#!/usr/bin/env python
#
# [SNIPPET_NAME: Columnar display]
# [SNIPPET_CATEGORIES: Python Core]
# [SNIPPET_DESCRIPTION: Print a list of arguments in several columns]
# [SNIPPET_AUTHOR: Akkana Peck <[email protected]>]
# [SNIPPET_LICENSE: GPL]
def columnar_display(list, pagewidth=77) :
    maxlen = 0
    for item in list :
        l = len(str(item))
        if l > maxlen :
            maxlen = l
    maxlen += 2   # space it out a little more
    numcol = int(pagewidth / maxlen)

    i = 0
    for item in list :
        print '{0:{1}}'.format(item, maxlen),
        i += 1
        if i % numcol == 0 :
            print '\n',

list = [ 'Python Core', 'Python VTE', 'Regular Expression', 'socket',
         'tarfile', 'Testing', 'threading', 'twitter', 'unittest',
         'Upstart', 'Webkit', 'Zeitgeist' ]

columnar_display(list)