Python - 交叉列表求幂
有时我们会遇到需要将特定函数应用于两个列表中相似索引的每个元素的情况。这些非常相似,并且作为某些实用程序的应用程序出现。让我们讨论可以执行求幂(即两个列表的余数)的某些方式。
方法 #1:使用zip()
+ 列表理解
zip 操作可用于将一个列表与另一个列表链接,计算部分可以由列表理解处理,因此为这个特定问题提供了简写。
# Python3 code to demonstrate
# Cross list exponentiation
# using zip() + list comprehension
# initializing lists
test_list1 = [3, 5, 2, 6, 4]
test_list2 = [7, 3, 4, 1, 5]
# printing original lists
print ("The original list 1 is : " + str(test_list1))
print ("The original list 2 is : " + str(test_list2))
# Cross list exponentiation
# using zip() + list comprehension
res = [i ** j for i, j in zip(test_list1, test_list2)]
# printing result
print ("The cross exponentiation list is : " + str(res))
输出 :
The original list 1 is : [3, 5, 2, 6, 4]
The original list 2 is : [7, 3, 4, 1, 5]
The cross exponentiation list is : [2187, 125, 16, 6, 1024]
方法 #2:使用map()
使用 map函数是最优雅的方式,我们可以通过这两个列表执行函数的孪生。也可以对其应用除幂运算以外的不同运算。
# Python3 code to demonstrate
# Cross list exponentiation
# using map()
from operator import pow
# initializing lists
test_list1 = [3, 5, 2, 6, 4]
test_list2 = [7, 3, 4, 1, 5]
# printing original lists
print ("The original list 1 is : " + str(test_list1))
print ("The original list 2 is : " + str(test_list2))
# Cross list exponentiation
# using map()
res = list(map(pow, test_list1, test_list2))
# printing result
print ("The cross exponentiation list is : " + str(res))
输出 :
The original list 1 is : [3, 5, 2, 6, 4]
The original list 2 is : [7, 3, 4, 1, 5]
The cross exponentiation list is : [2187, 125, 16, 6, 1024]