如何用PYTHON解决Table Printer问题
1、打开JUPYTER NOTEBOOK,新建一个PY文档。

2、tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
在这里创建一个列表,列表里面有三个列表,每个列表有4个字符串,我们需要打印出来,并且排列好。

3、for i in range(len(tableData)):
for j in range(len(tableData)):
print(tableData[i][j])
用内嵌FOR LOOPS直接打印的效果不是很好。

4、for i in range(len(tableData[0])):
for j in range(len(tableData)):
print(tableData[i][j])
假设每个列表里面的字符串数量一致,我们设置I的范围仅在第一个列表里面。

5、for i in range(len(tableData[0])):
for j in range(len(tableData)):
print(tableData[i][j], end = ' ')
为了让他们都排列好,首先去掉换行符号。

6、for i in range(len(tableData[0])):
for j in range(len(tableData)):
print(tableData[i][j], end = ' ')
print('\r') #要回车
然后再另外加一个回车,这样就每三个回车一次。

7、for i in range(len(tableData[0])):
for j in range(len(tableData)):
print(tableData[j][i], end = ' ')
print('\r')
注意要调整J和I的位置

8、tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
colWidths = [0] * len(tableData)
for i in range(len(tableData)):
colWidths[i] = len(max(tableData[i], key = len))
for i in range(len(tableData[0])):
for j in range(len(tableData)):
print(tableData[j][i].rjust(colWidths[j]), end = ' ')
print('\r')
我们设置一下最大字符串的长度,存储在新的列表里面。

9、tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
colWidths = [0] * len(tableData)
for i in range(len(tableData)):
colWidths[i] = len(max(tableData[i], key = len))
print(colWidths)
for i in range(len(tableData[0])):
for j in range(len(tableData)):
print(tableData[j][i].rjust(colWidths[j]), end = ' ')
print('\r')
可以看出打印的列表就是依照这个新的列表的长度来对齐的了。
