Below is a python function that I created. The purpose of this function is to print correctly aligned columns using variable length items. The result is that you can pass the function a list (or list of lists), the same list is returned with each item padded to the maximum item length within the relating column.
The function works by going through all the items within the list and building a list of the length of the largest item within each of the columns. This list is then used to pad each of the items within the list to the correct size.
In addition to the list (that you need to pass this function), you also need to pass it a delimiter.
def autowidth(list,delim): colwidth = [] templist = [] ### ITERATE THROUGH EACH ITEM OF FIRST LIST ### for y in range(len(list[0])): templist.append([]) ### ITERATE THROUGH EACH LIST ### for x in range(len(list)): ### CREATE A LIST FOR EACH COLUMN ### templist[y].append(list[x][y]) ### CREATE A LIST OF MAX COLUMN WIDTHS ### for y in range(len(templist)): max = 0 for a in templist[y][:]: if len(a) > max: max = len(a) colwidth.append(max) ### PAD EACH LIST ITEM TO THE MAX LENGTH ### for y in list[:]: for x in range(len(colwidth)): y[x] = y[x].ljust(colwidth[x]) + delim return list
Example
>>> list = [“apples”, “bananas”, “pears”, “orange”],[“123”, “12453”, “125454”, “21332”],[“1”, “2”, “3”, “222”],[“987”, “654 654”, “654654”, “42454654”],[“464”, “12”, “121”, “12”],[“12”, “123”, “123123”, “123123123123”]
>>>
>>> def autowidth(list,delim):
… colwidth = []
… templist = []
… ### ITERATE THROUGH EACH ITEM OF FIRST LIST ###
… for y in range(len(list[0])):
… templist.append([])
… ### ITERATE THROUGH EACH LIST ###
… for x in range(len(list)):
… ### CREATE A LIST FOR EACH COLUMN ###
… templist[y].append(list[x][y])
… ### CREATE A LIST OF MAX COLUMN WIDTHS ###
… for y in range(len(templist)):
… max = 0
… for a in templist[y][:]:
… if len(a) > max:
… max = len(a)
… colwidth.append(max)
… ### PAD EACH LIST ITEM TO THE MAX LENGTH ###
… for y in list[:]:
… for x in range(len(colwidth)):
… y[x] = y[x].ljust(colwidth[x]) + delim
… return list
…
>>> autowidth(list,” “)
([‘apples ‘, ‘bananas ‘, ‘pears ‘, ‘orange ‘], [‘123 ‘, ‘12453 ‘, ‘125454 ‘, ‘21332 ‘], [‘1 ‘, ‘2 ‘, ‘3 ‘, ‘222 ‘], [‘987 ‘, ‘654654 ‘, ‘654654 ‘, ‘42454654 ‘], [‘464 ‘, ’12 ‘, ‘121 ‘, ’12 ‘], [’12 ‘, ‘123 ‘, ‘123123 ‘, ‘123123123123 ‘])
>>> list = autowidth(list,” “)
>>> for z in range(len(list)):
… print “”.join(list[z])
…
apples bananas pears orange
123 12453 125454 21332
1 2 3 222
987 654654 654654 42454654
464 12 121 12
12 123 123123 123123123123
>>>
- How to Configure a BIND Server on Ubuntu - March 15, 2018
- What is a BGP Confederation? - March 6, 2018
- Cisco – What is BGP ORF (Outbound Route Filtering)? - March 5, 2018
Want to become a programming expert?
Here is our hand-picked selection of the best courses you can find online:
Python Zero to Hero course
Python Pro Bootcamp
Bash Scripting and Shell Programming course
Automate with Shell Scripting course
The Complete Web Development Bootcamp course
and our recommended certification practice exams:
AlphaPrep Practice Tests - Free Trial