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