Python – 不均匀大小的矩阵列最小值
与传统的 C 类型 Matrix 不同,通常的列表列表可以允许具有可变长度的列表的嵌套列表,并且当我们要求其列的最小值时,行的不均匀长度可能会导致该元素中的某些元素不存在,并且如果处理不当,可能会抛出异常。让我们讨论一些可以以无错误方式执行此问题的方法。
方法 #1:使用min() + filter() + map()
+ 列表理解
上述三个函数与列表推导的结合可以帮助我们执行这个特定的任务,min函数有助于执行最小值,filter 允许我们检查当前元素,并且所有行都使用 map函数进行组合。仅适用于Python 2。
# Python code to demonstrate
# Uneven Sized Matrix Column Minimum
# using min() + filter() + map() + list comprehension
# initializing list of lists
test_list = [[1, 5, 3], [4], [9, 8]]
# printing original list
print ("The original list is : " + str(test_list))
# using min() + filter() + map() + list comprehension
# Uneven Sized Matrix Column Minimum
res = [min(filter(None, j)) for j in map(None, *test_list)]
# printing result
print ("The minimum of columns is : " + str(res))
输出 :
The original list is : [[1, 5, 3], [4], [9, 8]]
The minimum of columns is : [1, 5, 3]
方法 #2:使用列表理解 + min() + zip_longest()
如果不想使用 None 值,可以选择这种方法来解决这个特定问题。 zip_longest函数有助于用 0 填充不存在的列,这样它就不必处理不存在的元素的空白。
# Python3 code to demonstrate
# Uneven Sized Matrix Column Minimum
# using list comprehension + min() + zip_longest()
import itertools
# initializing list of lists
test_list = [[1, 5, 3], [4], [9, 8]]
# printing original list
print ("The original list is : " + str(test_list))
# using list comprehension + min() + zip_longest()
# Uneven Sized Matrix Column Minimum
res = [min(i) for i in itertools.zip_longest(*test_list, fillvalue = 1000000)]
# printing result
print ("The minimum of columns is : " + str(res))
输出 :
The original list is : [[1, 5, 3], [4], [9, 8]]
The minimum of columns is : [1, 5, 3]