2015-11-13 71 views
2

如果我的问题显得过于天真或太基本,请事先赦免。我仍然在学习使用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,)) 

只是一个想法就足够了。我可以尝试自己实施它。元组串接的

回答

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 
3

您可以添加0如果长度少于4

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

我会做那样的事情ev恩,如果它不是优化:

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)