那天偶尔看到看到一个小问题:两个不等长列表a=[1,2,3],b=[4,5,6,7],求它们对应元素的乘积的和。
我一开始想到的方法就是选择更小数组作为循环长度然后相乘求和:
1
2
3
4
5
6
|
a = [ 1 , 2 , 3 ] b = [ 4 , 5 , 6 , 7 ] sum = 0 for i in range ( 0 , min ( len (a), len (b))): number + = a[i] * b[i] print ( sum ) |
但是后来我想到了一种更为巧妙的方法,利用函数zip():
1
2
3
4
5
6
7
|
a = [ 1 , 2 , 3 ] b = [ 4 , 5 , 6 , 7 ] all = zip (a,b) num = 0 for i,j in all : num + = i * j print (num) |
两种方法的结果完全相同
zip()函数的作用是将列表打包为元组列表,以上述两个列表为例:
1
2
3
|
a = [ 1 , 2 , 3 ] b = [ 4 , 5 , 6 , 7 ] all = zip (a,b) |
这时的“all”实际上是这样的形式:
[(1, 4), (2, 5), (3, 6)]
很有意思的小实例,顺便学习了一个函数
补充:Python 计算列表元素之积
定义一个数字列表,并计算列表元素之积。
例如:
输入 : list1 = [1, 2, 3]
输出 : 6
计算:1 * 2 * 3
实例 1
1
2
3
4
5
6
7
8
9
10
11
|
def multiplyList(myList) : result = 1 for x in myList: result = result * x return result list1 = [ 1 , 2 , 3 ] list2 = [ 3 , 2 , 4 ] print (multiplyList(list1)) print (multiplyList(list2)) |
以上实例输出结果为:
6
24
采用递归方法:
1
2
3
4
5
6
7
8
9
10
|
def list_product(list_1,size): if size = = 0 : return 1 else : return list_1[size - 1 ] * list_product(list_1,size - 1 ) list_1 = [i for i in range ( 3 , 6 )] #生成列表[3,4,5] print (list_1) print (list_product(list_1, len (list_1))) |
到此这篇关于python求列表对应元素的乘积和的实现的文章就介绍到这了,更多相关python 列表对应元素乘积和内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/cx_carol/article/details/105434452