打印列表:先转置,然后首列打印时右对齐,其他列左对齐

输入:
tableData = [['apples','oranges','cherries','banana'],
['Alice','Bob','Carol','David'],
['dogs','cats','moose','goose']]

输出:

那么需要对列表进行如下处理:
1.转置
将34的列表转置成43的列表

2.首列打印时右对齐,其他列左对齐
获取到每列的最大宽度,然后将首列右对齐、补全空格;其他列左对齐

代码如下:
from dim2Max import max2

# Input List
tableData = [['apples','oranges','cherries','banana'],
			['Alice','Bob','Carol','David'],
			['dogs','cats','moose','goose']]

# Output List
list=[[0 for col in range(3)] for row in range(4)]
width=[0,0,0,0]

# Make List Transpose
for i in range(len(tableData[0])):
	for j in range(len(tableData)):
		list[i][j]=tableData[j][i]
		width[i] += len(list[i][j])

	j=0


# Get width of each columns
colWidth = max2(list)

def printDim2List(list,width):
	for i in range(len(list)):
		for j in range(len(list[i])):
			print(list[i][j].ljust(width[0]+1,' '),end='')
		print('')
	return 0

# First column rightjust
# Other columns leftjust
def getJustList(spam,width):
	spam2=spam
	for i in range(len(spam)):
		for j in range(len(spam[i])):
			if j == 0:
				spam2[i][j]=spam[i][j].rjust(width[j])
		else:
			spam2[i][j]=spam[i][j].ljust(width[j])
	return spam2

finalList=getJustList(list,colWidth)
printDim2List(finalList,colWidth)

dim2Max.py:

def max2(list):
	max=[0,0,0]
	for i in range(len(list[0])):
		for j in range(len(list)):
			if max[i] < len(list[j][i]) :
				max[i] = len(list[j][i])
	return max
posted @ 2018-02-27 09:14  bamboo233  阅读(187)  评论(0)    收藏  举报