如何在python中将可变长度列表打印为列?
我需要一种方法来打印几个不同长度的列表,作为列,列彼此相邻,以制表符分隔,空单元格保持为空或包含一些填充字符,例如- 到目前为止,尝试的方法对于不同长度的列表不起作用,numpy也没有像我预期的那样起作用 总结如下:如何在python中将可变长度列表打印为列?,python,list,multiple-columns,Python,List,Multiple Columns,我需要一种方法来打印几个不同长度的列表,作为列,列彼此相邻,以制表符分隔,空单元格保持为空或包含一些填充字符,例如- 到目前为止,尝试的方法对于不同长度的列表不起作用,numpy也没有像我预期的那样起作用 总结如下: listname = [[1,2,3],[4,5,6,7,8],[9,10,11,12]] 以.txt文件的形式打印: 1 4 9 2 5 10 3 6 11 - 7 12 - 8 - 你可以用。要填充较长序列中的无空
listname = [[1,2,3],[4,5,6,7,8],[9,10,11,12]]
以.txt文件的形式打印:
1 4 9
2 5 10
3 6 11
- 7 12
- 8 -
你可以用。要填充较长序列中的无空格,可以使用fillvalue@szxk:
>>> import itertools
>>> listname = [[1,2,3],[4,5,6,7,8],[9,10,11,12]]
>>> for x in itertools.izip_longest(*listname, fillvalue="-"):
... print '\t'.join([str(e) for e in x])
...
1 4 9
2 5 10
3 6 11
- 7 12
- 8 -
你可以用。要填充较长序列中的无空格,可以使用fillvalue@szxk:
>>> import itertools
>>> listname = [[1,2,3],[4,5,6,7,8],[9,10,11,12]]
>>> for x in itertools.izip_longest(*listname, fillvalue="-"):
... print '\t'.join([str(e) for e in x])
...
1 4 9
2 5 10
3 6 11
- 7 12
- 8 -
在这种情况下,您可以使用zip函数,这对于itertools.izip的小列表更有效
A基准:
~$ python -m timeit "import itertools;listname = [[1,2,3],[4,5,6,7,8],[9,10,11,12]];itertools.izip_longest(*listname)"
1000000 loops, best of 3: 1.13 usec per loop
~$ python -m timeit "listname = [[1,2,3],[4,5,6,7,8],[9,10,11,12]];zip(*listname)"
1000000 loops, best of 3: 0.67 usec per loop
在这种情况下,您可以使用zip函数,这对于itertools.izip的小列表更有效
A基准:
~$ python -m timeit "import itertools;listname = [[1,2,3],[4,5,6,7,8],[9,10,11,12]];itertools.izip_longest(*listname)"
1000000 loops, best of 3: 1.13 usec per loop
~$ python -m timeit "listname = [[1,2,3],[4,5,6,7,8],[9,10,11,12]];zip(*listname)"
1000000 loops, best of 3: 0.67 usec per loop
使用熊猫怎么样:
使用熊猫怎么样:
你应该看看Python字符串格式你应该看看Python字符串格式一个注意是izip_longest接受一个填充值作为参数,因此你可以编写itertools.izip_longest*listname,fillvalue=-@ReutSharabani为什么需要转换为字符串才能工作?排除字符串转换会引发错误…如果您正在谈论这一行:print'\t'.join[stre for e in x],这是必要的,因为您有一个int列表,str.join opeartes在一个str列表上。Quote:返回一个字符串,该字符串是iterable中字符串的串联。需要注意的是,izip_longest接受一个填充值作为参数,因此您可以编写itertools.izip_longest*listname,fillvalue=-@ReutSharabani为什么需要将其转换为字符串才能工作?排除字符串转换会引发错误…如果您正在谈论这一行:print'\t'.join[stre for e in x],这是必要的,因为您有一个int列表,str.join opeartes在一个str列表上。Quote:返回一个字符串,该字符串是iterable中字符串的串联。