有没有快速的方法将树形元组转换为矩阵形式的元组(三角形)?
就是这样:
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,))
只需一个想法即可。我可以尝试自己实现它。
答案 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)