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]