📜  Python|矩阵中的行长

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

Python|矩阵中的行长

关于矩阵的问题在竞争性编程和数据科学领域都很常见。我们可能面临的一个这样的问题是在不均匀大小的矩阵中找到矩阵行的长度。让我们讨论一些可以解决这个问题的方法。

方法 #1:使用max() + map() + sum() + 列表理解

上述功能的组合可以帮助在一行中解决这个特定问题,因此非常有用。 sum函数计算子列表的总和,max函数可用于降序排序,所有这些都使用列表推导绑定在一起。

# Python3 code to demonstrate
# Row lengths in matrix
# using max() + map() + sum() + list comprehension
  
# initializing list
test_list = [[4, 5, 6], [7, 8], [2]]
  
# printing original list
print("The original list : " + str(test_list))
  
# using max() + map() + sum() + list comprehension
# Row lengths in matrix
res = [sum(len(row) > idx for row in test_list)
    for idx in range(max(map(len, test_list)))]
  
# print result
print("The row lengths in matrix : " + str(res))
输出 :
The original list : [[4, 5, 6], [7, 8], [2]]
The row lengths in matrix : [3, 2, 1]

方法#2:使用sum() + filter() + zip_longest()

这个问题也可以使用上面的函数集来解决。 filter函数可用于获取单独的列表,sum函数完成的求和绑定任务由 zip_longest函数执行。

# Python3 code to demonstrate
# Row lengths in matrix
# using sum() + filter() + zip_longest()
from itertools import zip_longest
  
# initializing list
test_list = [[4, 5, 6], [7, 8], [2]]
  
# printing original list
print("The original list : " + str(test_list))
  
# using sum() + filter() + zip_longest()
# Row lengths in matrix
res = [sum(1 for idx in filter(None.__ne__, i))
              for i in zip_longest(*test_list)]
  
# print result
print("The row lengths in matrix : " + str(res))
输出 :
The original list : [[4, 5, 6], [7, 8], [2]]
The row lengths in matrix : [3, 2, 1]