📜  Python|不均匀大小列表中的列总和

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

Python|不均匀大小列表中的列总和

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

方法#1:使用sum() + filter() + map() + list comprehension
上述三个函数与列表推导相结合可以帮助我们执行此特定任务,sum函数有助于执行求和,filter 允许我们检查当前元素并使用 map函数组合所有行。仅适用于Python 2

# Python code to demonstrate  
# Column summation in uneven sized lists
# using sum() + 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 sum() + filter() + map() + list comprehension
# Column summation in uneven sized lists
res = [sum(filter(None, j)) for j in map(None, *test_list)]
  
# printing result
print ("The summation of columns is : " + str(res))
输出 :
The original list is : [[1, 5, 3], [4], [9, 8]]
The summation of columns is : [14, 13, 3]

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

# Python3 code to demonstrate  
# Column summation in uneven sized lists
# using list comprehension + sum() + 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 + sum() + zip_longest()
# Column summation in uneven sized lists
res = [sum(i) for i in itertools.zip_longest(*test_list, fillvalue = 0)]
  
# printing result
print ("The summation of columns is : " + str(res))
输出 :
The original list is : [[1, 5, 3], [4], [9, 8]]
The summation of columns is : [14, 13, 3]