Python二维列表格式化输出

奉上代码:

def format_output(value_list):
    """
    :param value_list: 需要输出的二维列表
    :return: 格式化输出二维列表
    """
    len_value_list, value_len_lists, max_space = [], [], []
    max_space = []
    value_list_vertical = list(zip(*value_list[::-1]))
    for i in value_list_vertical:
        value_len_list = []
        for j in i:
            num = 0
            for k in j:
                if '\u4e00' <= k <= '\u9fff':
                    num += 2
                else:
                    num += 1
            value_len_list.append(num)
        value_len_lists.append(value_len_list)
        max_space.append(max(value_len_list))
    value_list_len = []
    for i in list(zip(*value_len_lists[::-1])):
        value_list_len.append(list(reversed(i)))
    value_list_len = list(reversed(value_list_len))
    for i_index, i_value in enumerate(value_list):
        result = '  '
        for j_index, j_value in enumerate(i_value):
            result += j_value + '\x20' * (max_space[j_index] - value_list_len[i_index][j_index] + 5)
        print(result)

个人实测没啥毛病,应该可以凑活用
由于中英文空格的长度不同,列表中包含中文时,英文是不指望了,把空格转换成改成全角,可以解决中英文无法对其的问题
代码执行效率上可能有点低,哪位大佬有更好的算法欢迎批评指正

posted @ 2023-08-28 15:04  liuada  阅读(28)  评论(0编辑  收藏  举报  来源