Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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_Python 3.x_Sorting_Transpose - Fatal编程技术网

列出Python中的排序(转置)

列出Python中的排序(转置),python,list,python-3.x,sorting,transpose,Python,List,Python 3.x,Sorting,Transpose,我有任意列表,例如,这里有三个列表: a = [1,1,1,1] b = [2,2,2,2] c = [3,3,3,3] 我想把它们放在一起,得到如下输出: f_out = [1,2,3] g_out = [1,2,3] ... n_out = [1,2,3] 如您所见,我刚刚将“列”转换为“行” 问题是解决方案必须独立于列表长度 例如: a = [1,1] b = [2] c = [3,3,3] # output f_out = [1,2,3] g_out = [1,3] n_out =

我有任意列表,例如,这里有三个列表:

a = [1,1,1,1]
b = [2,2,2,2]
c = [3,3,3,3]
我想把它们放在一起,得到如下输出:

f_out = [1,2,3]
g_out = [1,2,3]
...
n_out = [1,2,3]
如您所见,我刚刚将“列”转换为“行”

问题是解决方案必须独立于列表长度

例如:

a = [1,1]
b = [2]
c = [3,3,3]
# output
f_out = [1,2,3]
g_out = [1,3]
n_out = [3]
你可以用

如果列表中的
None
是一个潜在的有效值,请使用sentinel而不是默认的
None

>>> b = [None]
>>> sentinel = object()
>>> [[e for e in li if e is not sentinel] for li in zip_longest(a,b,c, fillvalue=sentinel)]
[[1, None, 3], [1, 3], [3]]

您可能需要查看
itertools.zip\u longest
——这几乎就是您想要的,您只需过滤掉多余的填充。@mgilson谢谢!我认为它可以帮助我:)对于其他人来说,只要盯着这个问题,想知道输入和输出之间的关系是什么,它就把它当作一个转置矩阵。从下面看,
f
g
h
是将
a
b
c
水平向上排列并从上到下读取的结果。对于python3@PadraicCunningham:接得好--已修复
>>> b = [None]
>>> sentinel = object()
>>> [[e for e in li if e is not sentinel] for li in zip_longest(a,b,c, fillvalue=sentinel)]
[[1, None, 3], [1, 3], [3]]