Python 查找列表列表中每列的最大长度

Python 查找列表列表中每列的最大长度,python,Python,我正在使用Python2.6以及xlwt和pyodbc模块从MS SQL服务器(2008)上的视图创建excel报告。为了通过编程在excel中设置每个字段的正确宽度,我想检索每个列中值的最大长度 比如说 foo=[[1, 'This is a test',12039],[12, 'test',1235]] 将导致[2,14,5] 我确信有一个简单的解决方案我只是忽略了。如果输入列表很长,itertools.izip()可能比zip()更好,因为它将返回一个迭代器而不是一个长列表,因此可以节省

我正在使用Python2.6以及xlwt和pyodbc模块从MS SQL服务器(2008)上的视图创建excel报告。为了通过编程在excel中设置每个字段的正确宽度,我想检索每个列中值的最大长度

比如说

foo=[[1, 'This is a test',12039],[12, 'test',1235]]
将导致
[2,14,5]


我确信有一个简单的解决方案我只是忽略了。

如果输入列表很长,itertools.izip()可能比zip()更好,因为它将返回一个迭代器而不是一个长列表,因此可以节省一些内存空间。

是的。对于用户589983,基本上zip(*foo)转置列表(例如,
[(1,12),('This…]
),然后遍历行(1,12),然后遍历每行(x)中的项目查找表示为字符串的每一行的长度,并返回每一行的最大长度。不确定原因,但这段代码为我生成了一个最大值列表,因此我应用了额外的[link]max[/link]语句从生成的列表中提取最大值。@artifex_knowledge此代码生成每列中最长值的长度列表。请参阅问题中给出的示例。
[max(len(str(x)) for x in line) for line in zip(*foo)]