Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中将可变长度列表打印为列?_Python_List_Multiple Columns - Fatal编程技术网

如何在python中将可变长度列表打印为列?

如何在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 - 你可以用。要填充较长序列中的无空

我需要一种方法来打印几个不同长度的列表,作为列,列彼此相邻,以制表符分隔,空单元格保持为空或包含一些填充字符,例如-

到目前为止,尝试的方法对于不同长度的列表不起作用,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    -
你可以用。要填充较长序列中的无空格,可以使用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中字符串的串联。