📜  Python – 矩阵中的连续行求和

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

Python – 矩阵中的连续行求和

这篇特别的文章重点讨论了一个在竞争和日常编程中都有用的问题。有时,当与下一个列表进行比较时,我们需要获得相似索引之间的总和。返回该索引中相似元素之间的总和。让我们讨论可以执行此任务的某些方式。

方法 #1:使用sum() + abs() + zip() + 列表理解
这个特殊问题也可以使用上述 4 个操作的组合来解决。这里 zip函数完成了配对列表和配对 sum 的类似索引的双重任务,由 abs函数计算,然后使用 sum函数找到 sum ,所有这些都受列表理解的限制。

# Python3 code to demonstrate
# Consecutive Row summation in Matrix
# using sum() + abs() + zip() + list comprehension
  
# initializing list 
test_list = [[3, 4, 5], [4, 6, 8], [1, 9, 2], [3, 7, 10]]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using sum() + abs() + zip() + list comprehension
# Consecutive Row summation in Matrix
res = [sum(abs(i + j) for i, j in zip(*ele)) for ele in zip(test_list, test_list[1:])]
  
# print result
print("The row summation sublist : " + str(res))
输出 :
The original list : [[3, 4, 5], [4, 6, 8], [1, 9, 2], [3, 7, 10]]
The row summation sublist : [30, 30, 32]

方法#2:使用 sum() + map() + abs + zip()
这个任务也可以通过以上函数的组合来实现,另外还有一个map函数,执行abs操作绑定到整个列表的任务。

# Python3 code to demonstrate
# Consecutive Row summation in Matrix
# using sum() + map() + abs + zip()
  
# initializing list 
test_list = [[3, 4, 5], [4, 6, 8], [1, 9, 2], [3, 7, 10]]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using sum() + map() + abs + zip()
# Consecutive Row summation in Matrix
res = [sum(map(abs, (i + j for i, j in zip(x, y)))) for x, y in zip(test_list, test_list[1:])]
  
# print result
print("The row summation sublist : " + str(res))
输出 :
The original list : [[3, 4, 5], [4, 6, 8], [1, 9, 2], [3, 7, 10]]
The row summation sublist : [30, 30, 32]