📜  Python - 列表中的对角线元素添加

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

Python - 列表中的对角线元素添加

有时,在使用Python列表时,我们可能会遇到一个问题,我们需要以对角方式执行列表添加,即将 1 个列表的第 i 个元素添加到其他列表的 i + 1 个元素。这类问题可以在日常编程中有应用。让我们讨论可以执行此任务的某些方式。

方法#1:使用循环
这是可以执行此任务的蛮力方式。在此,我们迭代一个列表并测试添加另一个列表的第 i + 1 个元素并构造结果列表。

# Python3 code to demonstrate 
# Diagonal element addition among lists
# using loop
  
# Initializing lists
test_list1 = [1, 6, 8, 5, 3]
test_list2 = [8, 10, 3, 4, 5]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# Diagonal element addition among lists
# using loop
res = []
for idx in range(0, len(test_list1) - 1):
    res.append(test_list1[idx] + test_list2[idx + 1])
  
# printing result 
print ("List after diagonal addition : " + str(res))
输出 :
The original list 1 is : [1, 6, 8, 5, 3]
The original list 2 is : [8, 10, 3, 4, 5]
List after diagonal addition : [11, 9, 12, 10]

方法 #2:使用zip() + 列表理解
这是可以执行此任务的另一种方式。在此,我们使用 zip() 将 ith 与其他列表的第 i+1 个元素分组。执行加法的任务是在列表理解中完成的。

# Python3 code to demonstrate 
# Diagonal element addition among lists
# using zip() + list comprehension
  
# Initializing lists
test_list1 = [1, 6, 8, 5, 3]
test_list2 = [8, 10, 3, 4, 5]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# Diagonal element addition among lists
# using zip() + list comprehension
res = [i + j for i, j in zip(test_list1, test_list2[1:])]
  
# printing result 
print ("List after diagonal addition : " + str(res))
输出 :
The original list 1 is : [1, 6, 8, 5, 3]
The original list 2 is : [8, 10, 3, 4, 5]
List after diagonal addition : [11, 9, 12, 10]