如何将树形元组转换为矩阵形元组?

时间:2015-11-13 17:45:37

标签: python python-3.x data-structures tuples

如果我的问题看起来太天真或太基本,请提前原谅。我还在学习使用SE。

有没有快速的方法将树形元组转换为矩阵形式的元组(三角形)?

就是这样:

t=((1,),(2,3,),(4,5,6,),(7,8,9,10,))

到此:

t=((1,0,0,0,),(2,3,0,0,),(4,5,6,0,),(7,8,9,10,))

只需一个想法即可。我可以尝试自己实现它。

3 个答案:

答案 0 :(得分:3)

如果长度小于4,则可以添加0

tuple(a+(0,)*(4-len(a)) for a in t)
((1, 0, 0, 0), (2, 3, 0, 0), (4, 5, 6, 0), (7, 8, 9, 10))

答案 1 :(得分:1)

利用元组连接:(这就像你说的那样开始)

>>> (1,)+(0,)*2
(1, 0, 0)

max()以及len()功能:

>>> len(max(((1,),(2,3,),(4,5,6,),(7,8,9,10,)),key = lambda x: len(x)))
4

答案 2 :(得分:1)

即使它没有得到优化,我也会这样做:

def tuple_to_serie(t)
    s = []
    max_len = max( [len(tup) for tup in t] )
    for tup in t :
        s.append( tup+(0,)*(max_len-len(tup)) )
    return tuple(s)

然后:

t = tuple_to_serie(t)