Python实现右对齐表格打印:sort与lambda优化方案解析
本文通过Python代码实例,详解如何实现字符串列表的右对齐表格打印。重点解析两种核心方法:利用sort方法结合lambda函数动态计算列宽,以及直接遍历比较获取最大长度。通过对比示例代码,展示如何优化列表处理逻辑,确保输出格式整齐美观,适用于各类文本排版场景。
Python右对齐表格打印实现思路
我们需要编写一个名为printTable()的函数,该函数接收一个包含字符串列表的列表作为参数,并将其以结构清晰的表格形式展示出来,要求每一列均进行右对齐处理。在此前提下,假设所有内部列表包含的字符串数量保持一致。例如,数据可能呈现如下结构:
table_data = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
调用printTable()函数后,预期的打印输出结果如下所示:
apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose
以下是实现该功能的示例代码1:
基于sort与lambda的列宽计算方案
import copy
def count_width(the_list):
new_list = copy.deepcopy(the_list)
col_widths = [0]*len(the_list)
i = 0
while i < len(new_list):
new_list[i].sort(key=lambda x: len(x), reverse=True)
col_widths[i] = new_list[i][0]
i = i+1
return col_widths
def list_ljust(the_list):
widths = count_width(the_list)
for j in range(len(the_list[0])):
for i in range(len(the_list)):
print(the_list[i][j].ljust(len(widths[i])), end=' ')
print('\r')
table_data = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
list_ljust(table_data)
第一种方法采用了sort方法:
具体实现中使用了lambda函数来定义排序规则。
此外,还有另一种实现方式的示例代码2:
直接遍历比较的列宽获取方案
def count_widths(the_list):
col_widths = [0]*len(the_list)
for i in range(len(the_list)):
for j in range(len(the_list[0])):
if len(the_list[i][j]) > max_len:
max_len = len(the_list[i][j])
col_widths[i] = max_len
return col_widths
def list_ljust(the_list):
widths = count_widths(the_list)
print(widths)
for j in range(len(the_list[0])):
for i in range(len(the_list)):
print(the_list[i][j].ljust(widths[i]), end=' ')
print('\r')
table_data = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
list_ljust(table_data)
以上内容为本文的全部介绍,希望能为读者的学习提供有益参考,同时也欢迎大家继续支持本站获取更多技术资源。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













