如何在Python中相乘两个列表?
给定的问题陈述要求我们创建一个使用Python相乘两个列表的算法。在许多情况下,我们可以使用这种方法,例如数据预处理、组合信息、缩放值等等。因此,我们将演示完成此类工作的不同方法和算法。
理解问题
手头的问题是使用Python计算两个给定列表的乘积。基本上,我们将得到两个普通的Python列表,我们必须将第一个列表的项与第二个列表的项相乘。例如,让我们看看下面的图片。
上述问题的逻辑
为了解决相乘两个给定列表的问题,我们需要遍历两个列表的各个项,然后将它们彼此相乘。结果将是一个新列表,其中包含两个列表各项的乘积。还有一些其他方法可以帮助我们相乘两个列表:使用for循环、使用列表推导式和使用numpy库。
方法1:使用for循环
在这种方法中,我们将使用for循环来迭代两个列表的项,并将它们与相应的项相乘。并将相乘的值存储在名为multiplied_list的单独列表中。使用for循环的时间复杂度为O(n),其中n是列表中存在的项数。
示例
#multiply using for loop # Initialize the two lists first_list = [2, 4, 4, 6, 1] second_list = [8, 2, 5, 7, 3] # initialize result list multiplied_list = [] for i1, i2 in zip(first_list, second_list): multiplied_list.append(i1*i2) print("The multiplication of two lists: ", multiplied_list)
输出
The multiplication of two lists: [16, 8, 20, 42, 3]
方法2:使用列表推导式
在这种方法中,我们将使用列表推导式。因此,列表推导式是一种方法,我们可以根据给定的列表和给定的条件创建新的列表。在这种方法中,我们还将使用zip函数,这是一种迭代方法,用于迭代列表的项。
使用列表推导式相乘两个列表的时间复杂度为O(n),其中n是给定列表的大小。因为我们已经将列表的项相乘,并且使用了zip函数,该函数需要n次才能完成任务。
示例
#multiply using list comprehension # Initialize the two lists first_list = [12, 14, 14, 16, 21] second_list = [18, 12, 15, 17, 13] multiplied_list = [a1 * a2 for a1, a2 in zip(first_list, second_list)] print("The multiplied list is: ", multiplied_list)
输出
The multiplied list is: [216, 168, 210, 272, 273]
方法3:使用numpy
在这种方法中,我们将使用Python的numpy库。每当我们需要处理数组时,都可以使用numpy库。Numpy库包含一些用于处理数组的数学函数。因此,我们将使用numpy库的multiply函数,并将给定列表的每个对应项相乘。使用numpy相乘两个列表的时间复杂度为O(n),因为第一和第二个列表的大小为n。
示例
#multiply using numpy library # import the numpy library import numpy as nmp # Initialize the two lists first_list = [11, 12, 13, 14, 15] second_list = [1, 2, 3, 4, 5] #multiply two lists using numpy multiplied_list = nmp.multiply(first_list, second_list) # printing multiplied list print("The multiplied list is : " + str(multiplied_list))
输出
The multiplied list is : [11 24 39 56 75]
结论
因此,这就是我们通过迭代两个列表的对应项并将它们相乘以获得结果的方式来逐项相乘两个列表的方法。我们已经通过不同的方式解决了给定的问题,并且所有方法在时间复杂度方面都是有效的。