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))