Python 如何使用函数将列表格式化为列?

Python 如何使用函数将列表格式化为列?,python,function,python-3.3,Python,Function,Python 3.3,目前,我有一个从文本文档中找到的列表,正在使用for循环进行搜索: for sublist in mylist: if sublist[2] == inp: print (formatting(sublist)) 这将查找主列表(mylist)中的所有内容,并创建所需值的子列表。然后,我想通过一个函数来运行它,以将其转换为正确的格式 功能: def formatting(sublist): new_lis = [] widths = [max(map(len,

目前,我有一个从文本文档中找到的列表,正在使用for循环进行搜索:

for sublist in mylist:
     if sublist[2] == inp:
         print (formatting(sublist)) 
这将查找主列表(mylist)中的所有内容,并创建所需值的子列表。然后,我想通过一个函数来运行它,以将其转换为正确的格式

功能:

def formatting(sublist):

new_lis = []
widths = [max(map(len, col)) for col in zip(*sublist)]

for row in sublist:
    sub = ("  ".join((val.ljust(width) for val, width in zip(row, widths))))
    print(sub)
    new_lis.append(sub)
return new_lis
从子列表到def的输入为:

['Bart Simpson', '12345', 'G400', '2']
在运行完函数后,该函数如下所示:

['B', '1', 'G', '2'] 
[Bart Simpson,                  12345,  G400,   2]
当它看起来像这样时:

['B', '1', 'G', '2'] 
[Bart Simpson,                  12345,  G400,   2]

我不知道它为什么这么做。我只能想象这是从列表中每个实体的第一个实体中获取值并附加它。如果子列表中的项目数量有限,可以使用%格式,而不是追加整个单词。

print('[%s, %22s, %5s, %3s]' % tuple(sublist))
“s”之前的数字是以字符为单位的列的宽度,要打印的字符串用空格填充到该宽度


注意:您必须将列表转换为元组才能工作。

是否压缩字符串?是否要打印或存储它???我需要在定义后打印:)