📜  Python|转换为 N*N 元组矩阵

📅  最后修改于: 2022-05-13 01:55:39.553000             🧑  作者: Mango

Python|转换为 N*N 元组矩阵

有时,在处理数据时,我们可能会遇到一个问题,即我们的数据以元组 Matrix 的形式存在,行长度不均匀。在这种情况下,需要使用默认值完成 N*N 矩阵。让我们讨论一些可以解决这个问题的方法。

方法 #1:使用循环 + * operator
这个问题可以使用循环来解决。这是执行此任务的蛮力方法。我们只是附加默认值的次数,因为连续缺失的数据超过 N。

# Python3 code to demonstrate working of
# Conversion to N * N tuple matrix 
# using loop + * operator
  
# initialize tuple
test_tup = ((5, 4), (3, ), (1, 5, 6, 7), (2, 4, 5))
  
# printing original tuple
print("The original tuple is : " + str(test_tup))
  
# initializing dimension
N = 4
  
# Conversion to N * N tuple matrix 
# using loop + * operator
res = []
for tup in test_tup :
    res.append( tup +(0, ) * (N - len(tup)))
  
# printing result
print("Tuple after filling values : " + str(res))
输出 :
The original tuple is : ((5, 4), (3, ), (1, 5, 6, 7), (2, 4, 5))
Tuple after filling values : [(5, 4, 0, 0), (3, 0, 0, 0), (1, 5, 6, 7), (2, 4, 5, 0)]

方法 #2:使用tuple() + 生成器表达式
可以使用生成器表达式在一行中执行类似的任务。在这种情况下,应用与上面类似的逻辑,只是压缩为单行。 tuple()将结果更改为元组。

# Python3 code to demonstrate working of
# Conversion to N * N tuple matrix 
# using tuple() + generator expression
  
# initialize tuple
test_tup = ((5, 4), (3, ), (1, 5, 6, 7), (2, 4, 5))
  
# printing original tuple
print("The original tuple is : " + str(test_tup))
  
# initializing dimension
N = 4
  
# Conversion to N * N tuple matrix 
# using tuple() + generator expression
res = tuple(sub + (0, ) * (N-len(sub)) for sub in test_tup)
  
# printing result
print("Tuple after filling values : " + str(res))
输出 :
The original tuple is : ((5, 4), (3, ), (1, 5, 6, 7), (2, 4, 5))
Tuple after filling values : ((5, 4, 0, 0), (3, 0, 0, 0), (1, 5, 6, 7), (2, 4, 5, 0))