📜  Python - 混合长度二维列表中的最大列值

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

Python - 混合长度二维列表中的最大列值

与传统的 C 类型 Matrix 不同,通常的列表列表可以允许具有可变长度的列表的嵌套列表,并且当我们要求其列的最大化时,行的不均匀长度可能导致该元素中的某些元素不存在并且如果处理不当,可能会抛出异常。让我们讨论一些可以以无错误方式执行此问题的方法。

方法 #1:使用max() + filter() + map() + 列表理解
上述三个函数结合列表理解可以帮助我们执行这个特定任务,max函数有助于执行最大化,filter 允许我们检查当前元素,所有行都使用 map函数组合。仅适用于Python 2。

# Python code to demonstrate 
# Maximum column values mixed length 2D List
# using max() + 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 max() + filter() + map() + list comprehension
# Maximum column values mixed length 2D List
res = [max(filter(None, j)) for j in map(None, *test_list)]
  
# printing result
print ("The maximization of columns is : " + str(res))
输出 :
The original list is : [[1, 5, 3], [4], [9, 8]]
The maximization of columns is : [9, 8, 3]

方法 #2:使用列表理解 + max() + zip_longest()
如果不想使用 None 值,可以选择这种方法来解决这个特定问题。 zip_longest函数有助于用 0 填充不存在的列,这样它就不必处理不存在的元素的空白。

# Python3 code to demonstrate 
# Maximum column values mixed length 2D List
# using list comprehension + max() + 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 + max() + zip_longest()
# Maximum column values mixed length 2D List
res = [max(i) for i in itertools.zip_longest(*test_list, fillvalue = 0)]
  
# printing result
print ("The maximization of columns is : " + str(res))
输出 :
The original list is : [[1, 5, 3], [4], [9, 8]]
The maximization of columns is : [9, 8, 3]